Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何在XSLT中的select值中处理元素的某个参数?_Xml_Xslt - Fatal编程技术网

Xml 如何在XSLT中的select值中处理元素的某个参数?

Xml 如何在XSLT中的select值中处理元素的某个参数?,xml,xslt,Xml,Xslt,我的XML如下所示: <tags> <tag id="2"> <name> <de-DE>xxx</de-DE> </name> </tag> <tag id="5"> <name> <de-DE>ccc</de-DE> <

我的XML如下所示:

<tags>
      <tag id="2">
        <name>
          <de-DE>xxx</de-DE>
        </name>
      </tag>
      <tag id="5">
        <name>
          <de-DE>ccc</de-DE>
        </name>
      </tag>
      <tag id="12">
        <name>
          <de-DE>CC BY-SA</de-DE>
        </name>
      </tag>
    </tags>

xxx
ccc
CC BY-SA
我需要从标记id=“12”中提取CC BY-SA。如何使用select command值寻址标记id=“12”。 这就是我试图做的,但它没有提取任何内容:

 <xsl:value-of select="/tags/tag[@id=12]/name/de-DE"/>  

以您给出的XML为例,您尝试的是正确的。您可以使用任何XSLT在线工具进行检查

然而,我认为你给出的例子可能并不完全是你正在研究和尝试的。例如,我认为您的ID可能不同(当符合XML ID数据类型时,简单的数字不能作为ID,它们必须是XML名称)

更像是:

<tag id="id12">
  <name>
    <de-DE>CC BY-SA</de-DE>
  </name>
</tag>

CC BY-SA
在这种情况下,id不能再转换为数字12,只能测试它是否与字符串“id12”相等

所以正确的表达应该是:

<xsl:value-of select="/tags/tag[@id='id12']/name/de-DE"/>

您也可以发布您的xslt吗?其他可能的“人们没有告诉我们的事情,因为他们没有意识到它的重要性”候选词包括(a)源文档中的名称空间,以及(b)xsl:value-of-expression的动态上下文。最好构造一个完整的可运行示例来演示问题。