0

私は次のxmlを持っています:

<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person>
    <phone type='home'>203-555-1212</phone>
    <phone type='fax'>203-555-1212</phone>
    <address type='home'>
        <street>12 Main Street</street>
        <city>Southbury</city>
        <state>CT</state>
        <zip>06488</zip>
    </address>
    <firstName>Charles</firstName>
    <lastName>Smithington</lastName>
</person>
<person1>
        <phone type='home'>58-99-44-999</phone>
        <phone type='fax'>5788-9987-3365</phone>
        <address type='home'>
        <street>12 Main Street</street>
        <city>Park Avenue</city>
        <state>NY</state>
        <zip>10025</zip>
    </address>
        <firstName>Mike</firstName>
        <lastName>Shinoda</lastName>
    </person1>
</persons>

ここでは、州が CT である人の住所フィールドを除外し、州が NY である人の住所を含める必要があります。

4

1 に答える 1

0

<xsl:template match="persons">

    <persons>

        <xsl:apply-templates select="person"/>

        <xsl:apply-templates select="person1"/>

    </persons>

</xsl:template>

<xsl:template match="person">

    <person>
        <xsl:copy-of select="*[name() != 'address']"/>

        <xsl:apply-templates select="address"/>

    </person>

</xsl:template><xsl:template match="person1">

    <person1>

        <xsl:copy-of select="*[name() != 'address']"/>

        <xsl:apply-templates select="address"/>

    </person1>

</xsl:template>

<xsl:template match="address">

<xsl:if test="not(state='CT')">

    <xsl:copy-of select="../address"/>

    </xsl:if>

</xsl:template>

上記の変換を提供された xml に適用すると、次の結果 xml が生成されます。

<person>
    <phone type="home">203-555-1212</phone>

    <phone type="fax">203-555-1212</phone>

    <firstName>Charles</firstName>

    <lastName>Smithington</lastName>

</person>

<person1>

    <phone type="home">58-99-44-999</phone>

    <phone type="fax">5788-9987-3365</phone>

    <firstName>Mike</firstName>

    <lastName>Shinoda</lastName>

    <address type="home">

        <street>12 Main Street</street>

        <city>Park Avenue</city>

        <state>NY</state>

        <zip>10025</zip>

    </address>

</person1>

于 2013-04-06T09:41:14.483 に答える