0

次の XML ファイルがあります。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<DatDtl xmlns="http://ups.com/ttg/cache/country">
<CnyDtl>
<Cny TslLguCd="001" CnyCd="00" Cny2Cd="DNA" Cny3Cd="000" CnyNa="Data Not Available" CnyOflNa="Data Not Available" RecEffSttDt="2010-12-31" RecEffEndDt="2099-12-31" RecUdtTs="2012-07-27 15:35:08.352773"/>
<Cny TslLguCd="001" CnyCd="96" Cny2Cd="OTH" Cny3Cd="996" CnyNa="Other" CnyOflNa="Other" RecEffSttDt="2010-12-31" RecEffEndDt="2099-12-31" RecUdtTs="2012-07-27 15:35:14.291605"/>
</CnyDtl>
</DatDtl>

CnyCd と CnyNa の属性値だけを含む CSV ファイルに変換したいと考えています。これら 2 つの値を抽出するために、次の XSLT を作成しました。

<

?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
         <xsl:for-each select="CnyDtl/Cny">
         <xsl:value-of select="@CnyNa"/>
<xsl:value-of select="@CnyCd"/>
         </xsl:for-each>
        </xsl:template>
    </xsl:stylesheet>

しかし、私はいつもエラーが発生します。このための正しい XSLT 変換は何でしょうか?

4

1 に答える 1

0

まず第一に、あなたのスタイルシートで root element への言及を忘れていました<DatDtl>。また、名前空間をスタイルシートに宣言することを忘れないでください。

次の XSLT 1.0 スタイルシートを使用する場合:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mypref="http://ups.com/ttg/cache/country">
    <xsl:output method="text" />

    <xsl:variable name="FS"> <!-- Field seperator -->
        <xsl:text>;</xsl:text>
    </xsl:variable>
    <xsl:variable name="LT"> <!-- Line terminator -->
        <xsl:text>&#13;</xsl:text>
    </xsl:variable>

    <xsl:template match="/mypref:DatDtl">
        <xsl:for-each select="mypref:CnyDtl/mypref:Cny">
            <xsl:value-of select="@CnyNa"/>
            <xsl:value-of select=" $FS" />
            <xsl:value-of select="@CnyCd"/>
            <xsl:value-of select="$LT" />
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

次の出力が得られます。

Data Not Available;00
Other;96
于 2013-09-16T15:51:43.123 に答える