这是XML文件:
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="LabXSLT.xslt"?>
<orders>
<order>
<customerid>2364</customerid>
<status>pending</status>
<item instock="Y" itemid="SD93">
<name>Flying By Roller Skates</name>
<price>25.00</price>
<qty>25</qty>
</item>
<item instock="N" itemid="B12">
<name>Bounce-o Ball</name>
<price>.35</price>
<qty>150</qty>
</item>
</order>
<order>
<customerid>5268</customerid>
<status>complete</status>
<item instock="Y" itemid="Q52">
<name>Crash N Burn Skis</name>
<price>20</price>
<qty>10</qty>
</item>
</order>
</orders>
XSLT文件:
<xsl:for-each select="orders/order">
<p>Customer Number:</p>
<xsl:value-of select="customerid" />
<p>Name:</p>
<xsl:value-of select="name" />
</xsl:for-each>
XSLT文件假设获取custeomrID和name并显示它。它获取customerID但不获取名称。它只剩下空白,看起来它只能到达两个名称元素。我认为其中一个问题是元素中有2个元素。不知道该怎么做。我也无法更改XML文件。
答案 0 :(得分:2)
有时可以帮助修复XML上的缩进,以便更清楚地看到层次结构:
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="LabXSLT.xslt"?>
<orders>
<order>
<customerid>2364</customerid>
<status>pending</status>
<item instock="Y" itemid="SD93">
<name>Flying By Roller Skates</name>
<price>25.00</price>
<qty>25</qty>
</item>
<item instock="N" itemid="B12">
<name>Bounce-o Ball</name>
<price>.35</price>
<qty>150</qty>
</item>
</order>
<order>
<customerid>5268</customerid>
<status>complete</status>
<item instock="Y" itemid="Q52">
<name>Crash N Burn Skis</name>
<price>20</price>
<qty>10</qty>
</item>
</order>
</orders>
这样可以更容易地看到您需要定位item/name
编辑:要访问订单节点中的每个项目,您的XSL可能如下所示:
<xsl:for-each select="orders/order">
<p>Customer Number:</p>
<xsl:value-of select="customerid" />
<xsl:for-each select="item">
<p>Name:</p>
<xsl:value-of select="name" />
</xsl:for-each>
</xsl:for-each>
答案 1 :(得分:0)
name元素是项目的子元素。它似乎不是客户名称元素。这是你想要做的,还是你想要项目名称?
答案 2 :(得分:0)
name
标记位于item
标记内。那么当一个客户有多个名字时应该怎么办?
答案 3 :(得分:0)
因为名称位于标签项
下你的代码应该打印名称
<xsl: value-of select ="item/name"/>
答案 4 :(得分:0)
同样@Casey说的。但是,如果您使用
<xsl:value-of select="item/name" />
您只会获得第一个项目的名称,因为这是<xsl:value-of>
的作用。根据您的要求,您可能需要更改它。
答案 5 :(得分:0)
此样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="customerid|name">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="customerid/text()">
<xsl:value-of select="concat('Customer Number: ',.)"/>
</xsl:template>
<xsl:template match="name/text()">
<xsl:value-of select="concat('Name: ',.)"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
输出:
<p>Customer Number: 2364</p>
<p>Name: Flying By Roller Skates</p>
<p>Name: Bounce-o Ball</p>
<p>Customer Number: 5268</p>
<p>Name: Crash N Burn Skis</p>
注意:拉动样式,模式匹配。