1

これは私のXML入力です:

<maindocument>
<first>
<testing>random text</testing>
<checking>random test</checking>
</first>
<testing unit = "yes">
<tested>sample</tested>
<checking>welcome</checking>
<import task="yes">
<downloading>sampledata</downloading>
</import>
<import section="yes">
<downloading>valuable text</downloading>
</import>
<import chapter="yes">
<downloading>checkeddata</downloading>
</import>
</testing>
</maindocument>

出力は次のようになります。まず、testing unit = "yes" かどうかをチェックします。そうである場合は、セクション属性 = "yes" であることを確認する必要があります。これは出力です:

<maindocument>
<import>
      <doctype>Valuable text</doctype>
</import>
</maindocument

状態確認中ですxsl:if。最初に、testing unit="yes" かどうかをチェックします。次に、インポート セクション = "yes" かどうかを確認します。コードは上記の出力を達成できません。

4

2 に答える 2

2

これはあなたが探しているものですか?

XSLT 2.0

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="maindocument">
        <xsl:copy>
            <xsl:apply-templates select="@*|testing[@unit='yes']/import[@section='yes']"/>          
        </xsl:copy>
    </xsl:template>

    <xsl:template match="import/@*"/>

</xsl:stylesheet>

出力

<maindocument>
   <import>
      <downloading>valuable text</downloading>
   </import>
</maindocument>

に属性を保持したくない場合は、(テンプレート内の)から<maindocument>を削除します。@*|selectxsl:apply-templatesmaindocument

于 2012-08-02T22:00:29.857 に答える
1

この変換:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>

     <xsl:template match="/*">
      <maindocument>
        <xsl:apply-templates select="testing[@unit='yes']/import[@section='yes']"/>
      </maindocument>
     </xsl:template>

     <xsl:template match="import">
      <import>
        <doctype><xsl:value-of select="*"/></doctype>
      </import>
     </xsl:template>
</xsl:stylesheet>

提供された XML ドキュメントに適用した場合:

<maindocument>
    <first>
        <testing>random text</testing>
        <checking>random test</checking>
    </first>
    <testing unit = "yes">
        <tested>sample</tested>
        <checking>welcome</checking>
        <import task="yes">
            <downloading>sampledata</downloading>
        </import>
        <import section="yes">
            <downloading>valuable text</downloading>
        </import>
        <import chapter="yes">
            <downloading>checkeddata</downloading>
        </import>
    </testing>
</maindocument>

必要な正しい結果が生成されます。

<maindocument>
   <import>
      <doctype>valuable text</doctype>
   </import>
</maindocument>
于 2012-08-03T03:06:25.560 に答える