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」です。

ありがとう

4

1 に答える 1

1

ここでの最初の問題は、属性 CLASS の値が "Site" ("SITE" ではない) であることです。

ただし、for-each が最初の (ルート) ENTRY を選択し、値が子の ENTRY NAME 属性を選択するため、出力は「Production」になります。

「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 に答える