XML / XSL帮助<xsl:for-each>

时间:2019-09-19 12:06:34

标签: xslt xpath

我试图用来遍历我的元素,但是它一直在重复第一个元素,而不是遍历所有元素。

这是我的xml代码的一部分:

<?xml version="1.0" encoding="ISO-8859-1"?>
<customer ref="Hannah">

<fullname>

    <firstname>Hannah</firstname>

    <lastname>Hannah</lastname>

</fullname>

<meter ref="Hannah">

 <reading>

    <meterread>622224492</meterread>

</reading>

    </meter>

</customer>

<customer ref="Hannah">

<fullname>

    <firstname>Hannah</firstname>

    <lastname>Hannah</lastname>

</fullname>

<meter ref="Hannah">

<reading>

    <meterread>2822222132</meterread>

</reading>

</meter>

</customer> 

这是我的XSL代码的摘要:


<xsl:for-each select="customer">
<p>Name: <xsl:value-of select="customer/fullname"/></p>

<p>Num: <xsl:value-of select="customer//@ref"/></p>

</xsl:for-each>

基本上,它会不断重复第一个客户,而不是遍历每个元素。

任何帮助或建议都会很棒!

2 个答案:

答案 0 :(得分:0)

您的xsl:for-each正在选择customer元素,因此在xsl:for-each内部,您将位于customer元素上。这意味着xsl:value-of语句中的XPath表达式需要相对于此,而不是绝对路径。

例如,要获取全名,只需相对于当前fullname元素获取customer元素

<xsl:value-of select="fullname"/>

答案 1 :(得分:0)

仅更改以下代码:-

<p>Name: <xsl:value-of select="$customerInfo//customer/fullname"/></p>
                       to
<p>Name: <xsl:value-of select="fullname"/></p>

                       and

<p>Account Number: <xsl:value-of select="$customerInfo/customer//@number"/></p>
                       to
<p>Account Number: <xsl:value-of select="@number"/></p>