1

私の XSLT には、次のようなものがあります。

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes"/>

<xsl:template match="PhyscianTotals" name="PhyscianTotals">
<xsl:for-each select="PhysicianTotals">
    <xsl:for-each-group select="Statistic" group-by="Type">
        <xsl:if test="Title='PHYSICIAN DETAIL TOTAL'">
            <xsl:element name="totals">
    </xsl:element>
     </xsl:if>
</xsl:for-each-group>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

これは有効な XSLT ですか? 具体的には、「xsl:for-each-group内のxsl:if」のセクション。私たちが呼び出す XSLT コンパイル ツールの 1 つは、常に次のエラーを出力します: xsl:if は、スタイルシートのこの位置では許可されていません。xsl:for-each-group を削除すると、パスします。xslt にエラーがあるのか​​、それともコンパイル ツールなのかはわかりません。


私たちのツールは XSLT 1.0 しかサポートしていないことがわかりました。したがって、1.0 タグのみを使用して XSLT を書き直すことに戻ったと思います。

元の XML は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<PhysicianTotals>
    <Statistic>
      <Title>PHYSICIAN TOTAL</Title>
      <Type>Type 1</Type>
      <Key>Cases</Key>
      <Value>1</Value>
    </Statistic>
    <Statistic>
      <Title>PHYSICIAN TOTAL</Title>
      <Type>Type 1</Type>
      <Key>Percentage</Key>
      <Value>25.0%</Value>
    </Statistic>
    <Statistic>
      <Title>PHYSICIAN TOTAL</Title>
      <Type>Type 2</Type>
      <Key>Cases</Key>
      <Value>3</Value>
    </Statistic>
    <Statistic>
      <Title>PHYSICIAN TOTAL</Title>
      <Type>Type 1</Type>
      <Key>Percentage</Key>
      <Value>75.0%</Value>
    </Statistic>
</PhysicianTotals>

出力は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<totals>
<type>PHY_DETAIL</type>
<detailInfo>
    <code>Type 1</code>
</detailInfo>
<count>
    <caseValue>1</caseValue>
    <percentValue>25.0%</percentValue>
</count>
</totals>
<totals>
    <type>PHY_DETAIL</type>
<detailInfo>
    <code>Type 2</code>
</detailInfo>
<count>
    <caseValue>3</caseValue>
    <percentValue>75.0%</percentValue>
</count>
</totals>
4

2 に答える 2

1

xsl:output宣言のコピー/貼り付けエラーを除けば、コードは私には完全に問題ないように見えます。少し疑わしいです-PhyscianTotalsという要素とPhysicianTotalsという子が本当にありますか?したがって、実際にエラーを生成するコードを表示していないのではないかと思います。

もう1つの可能性は、エラーを生成するツールがXSLT1.0プロセッサであるということです。

于 2012-11-02T13:18:21.463 に答える
0
enchttp://stackoverflow.com/editing-helpoding="UTF-8"

これは構文的/語彙的に不正な名前です:enchttp://stackoverflow.com/editing-helpoding

ということencodingですか?

これ以外に字句/構文エラーはありません。変換には多くの論理的な問題があり、必要な結果が得られない可能性が高いようです。しかし、ソース XML ドキュメントと望ましい結果。

于 2012-11-02T01:36:24.123 に答える