0

我一直在努力使用 xsl:value-of 选择获得我想要的输出,但是我似乎没有走上正确的轨道。

这是 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

4

1 回答 1

1

这里的第一个问题是,属性 CLASS 的值是“Site”(不是“SITE”)。

但是,您的输出将是“Production”,因为 for-each 选择第一个(根)ENTRY 而不是选择子 ENTRY NAME 属性的值。

获得“CustomerSite”使用。

<xsl:if test="@CLASS='Site'">
    <xsl:value-of select="@NAME"/>
</xsl:if>

或者更好(不需要for-each):

<xsl:value-of select="/ENTRY[@CLASS='Site']/@NAME"/>
于 2013-06-23T21:07:48.987 回答