我一直在努力使用xsl:value-of select来获得我想要的输出,但是我似乎并没有使用它。
这是XML数据:
<?xml version="1.0" encoding="utf-8"?>
<ENTRY NAME="CustomerSite" CLASS="Site">
<ENTRY NAME="Production" CLASS="Configuration Set">
<ATTRIBUTE NAME="VersionMinor">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="VersionMajor">
<VALUE>3</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Site Identifier">
<VALUE>1</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="VersionPoint">
<VALUE>0</VALUE>
</ATTRIBUTE>
<ATTRIBUTE NAME="Note ID Dial String Digits">
<VALUE>*90</VALUE>
</ATTRIBUTE>
<ENTRY NAME="Account Codes" CLASS="Account Codes">
<ATTRIBUTE NAME="Enable">
<VALUE>No</VALUE>
</ATTRIBUTE>
</ENTRY>
</ENTRY>
这是我使用的XLS代码:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="ENTRY">
<xsl:if test="@CLASS='SITE'">
<xsl:value-of select="./ENTRY/@NAME"/>
</xsl:if>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
我要提取的数据是在第一个输入字段中用作NAME值的'CustomerSite'。
由于 Niteowls
答案 0 :(得分:1)
这里的第一个问题是属性CLASS的值是“Site”(不是“SITE”)。
但是你的输出将是“Production”,因为for-each选择第一个(root)ENTRY而不是选择子ENTRY NAME属性的值。
使用“CustomerSite”。
<xsl:if test="@CLASS='Site'">
<xsl:value-of select="@NAME"/>
</xsl:if>
或者更好(不需要每个人):
<xsl:value-of select="/ENTRY[@CLASS='Site']/@NAME"/>