gpt4 book ai didi

xslt - 使用 XSLT 解析 CData 中的 XML 元素并打印到 HTML

转载 作者:行者123 更新时间:2023-12-04 15:58:26 24 4
gpt4 key购买 nike

输入xml is

<getArtifactContentResponse>
<return>
<![CDATA[
<metadata>
<overview>
<name>scannapp</name>
<developerId>developer702</developerId>
<stateId>2</stateId>
<serverURL>abc.com</serverURL>
<id>cspapp1103</id>
<description>scann doc</description>
<hostingTypeId>1</hostingTypeId>
</overview>
</metadata>
]]>
</return>
</getArtifactContentResponse>

下面是我开发的样式表。我能够在 Cdata 中检索 XML,但无法获取元素值。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="html" encoding="utf-8" omit-xml-declaration="no" indent="no"/>
<xsl:template match="/">
<html>
<body>
<h1>Company Details</h1>
<table border="1">
<tr>
<th>name</th>
<th>developerId</th>
<th>Id</th>
</tr>table

<xsl:variable name ="data" select="//getArtifactContentResponse/return/node()" />
<tr>
<td>
<xsl:value-of select="$data/metadata/overview/name" disable-output-escaping="yes"/>


</td>
<td>
<xsl:value-of select="$data/metadata/overview/developerId" />
</td>
<td>
<xsl:value-of select="$data/metadata/overview/Id" />
</td>
</tr>

</table>

</body>
</html>
</xsl:template>
</xsl:stylesheet>

输出为
<html><body><h1>Company Details</h1><table border="1"><tr><th>name</th><th>developerId</th><th>serverURL</th></tr>table


<tr><td></td><td></td><td></td></tr></table></body></html>

预期输出
<html><body><h1>Company Details</h1><table border="1"><tr><th>name</th><th>developerId</th><th>serverURL</th></tr>table


<tr><td>scannapp</td><td>developer702</td><td>cspapp1103</td></tr></table></body></html>

我想取值名称、developerId、Id 并打印到 HtML。如何做到这一点 请帮助我。使用 XSLT 版本 1.0。

最佳答案

AFAIK,无法解析 CDATA 作为 XML .

使用扩展函数解析 部分作为文本 会很好,但不是真的必要。这是一个提取您需要的三个项目的示例:

...
<xsl:variable name ="cdata" select="/getArtifactContentResponse/return" />

<name>
<xsl:value-of select="substring-before(substring-after($cdata, '&lt;name&gt;'), '&lt;/name&gt;')"/>
</name>

<developerId>
<xsl:value-of select="substring-before(substring-after($cdata, '&lt;developerId&gt;'), '&lt;/developerId&gt;')"/>
</developerId>

<id>
<xsl:value-of select="substring-before(substring-after($cdata, '&lt;id&gt;'), '&lt;/id&gt;')"/>
</id>
...

关于xslt - 使用 XSLT 解析 CData 中的 XML 元素并打印到 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20249128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com