Java 如何为XML中的每个属性创建XPath

Java 如何为XML中的每个属性创建XPath,java,xml,xslt,xpath,Java,Xml,Xslt,Xpath,我有一个XML文件,我想使用Java或XSLT为XML文件中的每个属性创建xpath 示例XML- <host> <node> <type>fruit1</type> <value>10</value> </node> <node> <type>fruit2</type> <value>20</value> </

我有一个XML文件,我想使用Java或XSLT为XML文件中的每个属性创建xpath

示例XML-

<host> 
 <node> 
   <type>fruit1</type>
   <value>10</value>
 </node>
 <node>
   <type>fruit2</type>
   <value>20</value>
 </node>
 <node>
   <type>fruit3</type>
   <value xsi:type="valueList">
    <listValues>
      <value>
        <value>30</value>
        <code>abc</code>
      </value>
    </listValues>
   </value>
 </node>
 <node>
   <type>fruit4</type>
   <value>40</value>
 </node>  
 <node>
   <type>fruit5</type>
   <value>50</value>
 </node>
</host>
预计产量为-

host/node[1]/type[text()]
host/node[1]/value[text()]
host/node[2]/type[text()]
host/node[2]/value[text()]
host/node[3]/type[text()]
host/node[3]/value[@type = "valueList"]/listValues/value/value[text()]
host/node[3]/value[@type = "valueList"]/listValues/value/code[text()]
host/node[4]/type[text()]
host/node[4]/value[text()]
host/node[5]/type[text()]
host/node[5]/value[text()]
任何帮助都将是一个巨大的优势

您可以查看此项

 <xsl:template match="text()[normalize-space() ne '']">
    <xsl:text>&#xa;</xsl:text>
    <xsl:for-each select="ancestor::*">
        <xsl:value-of select="local-name()"/>
        <xsl:if test="following-sibling::*[local-name() = current()/local-name()] or preceding-sibling::*[local-name() = current()/local-name()]"><xsl:value-of select="concat('[', count(preceding-sibling::*[local-name() = current()/local-name()]) + 1 ,']')"></xsl:value-of></xsl:if>
        <xsl:for-each select="@*">
            <xsl:text>[@</xsl:text><xsl:value-of select="local-name(.)"/><xsl:text> = "</xsl:text><xsl:value-of select="."></xsl:value-of><xsl:text>"]</xsl:text>
        </xsl:for-each>
        <xsl:if test="position() ne last()">/</xsl:if>
        <xsl:if test="position() eq last()"><xsl:text>[text()]</xsl:text></xsl:if>
    </xsl:for-each>
</xsl:template>
在以下位置检查输出:

在索引似乎从0开始的地方,您想使用哪种XPath?在W3C标准中,第一个子节点的位置为1。什么是typetext,在我看来也不像XPath。嗨,我已经修改了预期的输出。很抱歉,有很多可能重复的问题,我认为您可以将对兄弟姐妹的检查简化为just,并且您可能可以将xsl:value替换为just。请参阅,当我使用上述XSLT脚本时,我经常看到一个错误“实体名称必须紧跟实体引用中的“&”。你知道为什么吗?@QATesting你能分享你在上面发现的问题的输入吗。根据ne和eq运算符的使用,这是XSLT 2.0。但是XPath2.0中有一行代码。。。我认为规范中也有一个。