0

入力:

    <?xml version="1.0" encoding="utf-8" ?> 
    <products>
            <product ID="123">
                    <Product Name>Sample Name 1</Product Name>
                    <Images>
                            <Image>url1</Image> 
                            <Image>url2</Image> 
                            <Image>url3</Image> 
                    </Images>
            </product>
            <product ID="456">
                    <Product Name>Sample Name 2</ProductName>
                    <Images>
                            <Image>url4</Image> 
                            <Image>url5</Image> 
                            <Image>url6</Image> 
                    </Images>
            </product>
    </products>

出力:

    <?xml version="1.0" encoding="utf-8" ?> 
    <products>
            <product ID="123">
                    <ProductName>Sample Name 1</ProductName>
                    <Image>url1</Image> 
            </product>
            <product ID="456">
                    <ProductName>Sample Name 2</ProductName>
                    <Image>url4</Image> 
            </product>
    </products>

上記のように、 1 つの変更点が 2つあります。

要素タグ「商品名」を「商品名」に変更。

「画像」要素の下にネストされた製品ごとに複数の「画像」要素があり、最初の要素のみが保持され、他の要素は破棄されて階層に表示されます。

1つのxsltでこれを行うことができますか?

また、この xslt 変換が同じファイルに対して複数回行われたときにエラーが発生しない可能性はありますか? 最後のリクエストです。このリクエストに適したタイトル/タグが見つかりませんでした。他の人が見つけやすいものを提案してください。私はそれを更新します(許可されている場合)。

4

2 に答える 2

0

はい、可能です。実際には、非常に単純なテンプレートに従うことで、この仕事を行うことができます。

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

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

    <xsl:template match="Images">
        <xsl:copy-of select="Image[1]" />
    </xsl:template>
</xsl:stylesheet>
于 2013-07-15T14:25:36.387 に答える
0

XML の形式が整っていないため、これは機能しません。要素名にスペースは使用できません。XML の形式が適切であれば、要求を簡単に満たすことができます 2.

どういうわけか整形式の XML を取得すると仮定します。恒等変換 のためのトイレを持っているよりも

そして、最初の画像のみを考慮する画像のテンプレートを追加するよりも:

<xsl:template match="Images">
    <xsl:copy>
        <xsl:apply-templates select=" @* | Image[1]"/>
    </xsl:copy>
</xsl:template>
于 2013-07-15T13:30:45.713 に答える