【发布时间】:2016-11-10 08:53:46
【问题描述】:
我有一个 XML(根据 XML 标准,我知道它是不正确的,但由于我正在处理来自外部方的响应,所以我只能进行更改),如下所示,
XML Snippet : <root>
<3party>some_value</3party>
</root>
我想在 XSL 样式表转换中从 sn-p 上方获取 。事实是 元素是无效的,所以我不能像下面这样引用它,因为它无法通过 xsl 编译。我需要一种方法来将其称为部分元素可能正在使用某种 regx 方式?以下不正确。
<xsl:variable select="$response/root/3party" />
任何答案都会帮助我。
编辑:上述用例的可能解决方案是。
<xsl:for-each select="$response/root">
<!-- Node name -->
<xsl:variable name="name" select="local-name()" />
<!-- check if it contains party -->
<xsl:if test="contains($name, 'party')">
<!-- Node value -->
<xsl:variable name="value" select="node()" />
</xsl:if>
</xsl:for-each>
【问题讨论】:
-
我找到了解决方案如下,遍历所有 XML 节点并使用 XSL 函数检查部分名称。用答案编辑了我的问题。
-
“我有一个 XML(我知道根据 XML 标准它是不正确的,但我在处理来自外部方的响应时仅限于更改)” - 您没有 XML。你有什么奇怪的东西。不要尝试使用 XML 工具来处理非 XML。当您处理不是 XML 的内容时,不要将您的问题标记为 XML。
-
@MichaelKay 我正在处理 XSL 转换中的 XML 数据。
-
@TechBreak 您的输入不是 XML,XSLT 无法处理。寻找另一个工具。或者修复产生您输入的工具。
-
@MichaelKay 我已经给出了 XML 输入和一个可行的解决方案。 XSL 编译对我来说也很成功。