XSLT Exact路径

时间:2014-06-23 10:06:11

标签: xml xslt

我正在使用XSLT将xml写入json解析器。

这是我的xml:

<Item>
 <ChildItems>
  <Item>
    <Id>child-1</Id> 
  </Item>
  <Item>
    <Id>child-2</Id> 
  </Item> 
 </ChildItems>
 <Id>main-1</Id>
</Item>

我尝试获取主要元素的ID(main-1),但我得到了第一个ChildItem(child-1)的Id。

      <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                      xmlns:msxsl="urn:schemas-microsoft-com:xslt"  
                      xmlns:custom="custom:v1:interop" version="1.0"> 

     ...

     "Id": "<xsl:value-of select="//custom:Item/custom:Id" />"

     ...

我无法更改XML,因此请不要将此建议作为解决方案。

谢谢。

2 个答案:

答案 0 :(得分:0)

假设您已发布外部Item为根元素的完整XML,则路径/Item/Id将选择Id根元素的Item子元素。

答案 1 :(得分:0)

我按照你的XSL代码编写了Id和相对XPATH的绝对XPATH,从Item开始。 假设您需要它,我使用您的命名空间自定义。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:custom="custom:v1:interop" >
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:variable name="myId" select="custom:Item/custom:Id"/>
    <xsl:template match="custom:Item">
    <root>
    using relative XPATH: <xsl:value-of select="custom:Id"/>
    using absolute XPATH:  <xsl:value-of select="$myId"/>
    </root>
    </xsl:template>
</xsl:stylesheet>