1

私のサンプルxmlファイルには、これがあります:

<AAA mandatory = "true"> good </AAA>
<BBB mandatory = "true"></BBB>
<CCC />

結果のxmlでは、結果は次のようになります。

<AAA> good </AAA>
<BBB></BBB>

この xml を生成するには、変換ファイル xslt に何を入力すればよいですか?

現在、私はこれを持っています:

<xsl:template match="node()[(@mandatory='true' or (following-sibling::*[@mandatory='true' and string-length(normalize-space(.)) > 0] or preceding-sibling::*[@mandatory='true' and string-length(normalize-space(.)) > 0])) or descendant-or-self::*[string-length(normalize-space(.)) > 0]]">

しかし、これは表示され続けます

 <CCC />
4

1 に答える 1

0

入力 XML に対して XSLT を実行すると、出力が得られません。提供された XML は整形式ではなく、「一致」の XPATH は複雑すぎると思います。

私は XSL 1.0 ソリューションを思いつきましたが、それを XSL 2.0 で使用できるかどうかはわかりません。XSL 2.0 の経験がありません。

この XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">
    <list>
        <xsl:apply-templates/>
    </list>
</xsl:template>

<xsl:template match="*[@mandatory='true']">
    <xsl:copy>
        <xsl:apply-templates />
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

この入力 XML に適用されます。

<?xml version="1.0" encoding="UTF-8"?>
<list>
<AAA mandatory="true"> good </AAA>
<BBB mandatory="true"/>
<CCC/>
</list>

この出力 XML を提供します。

<?xml version="1.0" encoding="UTF-8"?>
<list>
<AAA> good </AAA>
<BBB/>
</list>

要素のテキストの長さもチェックしたいのか、それとも必須属性だけをチェックしたいのかわかりません。XSL の属性のみをチェックします。

于 2012-08-22T09:22:15.697 に答える