我有一个XML(根据XML标准,我知道它是不正确的,但我在处理来自外部方的响应时仅限于更改),如下所示,
XML Snippet : <root>
<3party>some_value</3party>
</root>
我想获取&lt; 3party&gt;从XSL样式表转换中的上面片段。事实是&lt; 3party&gt;元素无效,所以我不能像下面那样引用它,因为它没有通过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>
答案 0 :(得分:0)
关于添加到您问题的代码:
<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>
测试contains($name, 'party')
永远不会返回true。上下文节点的名称为root
,“root”不包含“party”。
更一般地说:您似乎认为问题是如何让您的XSLT样式表进行编译。事实并非如此。这里真正的问题是你的输入不是格式良好的XML。输入必须在转换之前进行解析,如果它不是格式良好的XML,那么即使考虑样式表,该过程也会很好地失败。