私はXSLTを使用してXMLファイルの構造を変換しようとしていましたが、私は立ち往生しています。xsltを使用してXML子要素構造を変換する
入力:
<products>
<product>
<name>name</name>
<prodoptions>
<prodoption sku="foo" description="description"/>
<prodoption sku="bar" description="otherdescription"/>
</prodoptions>
</product>
</products>
所望の出力:
<products>
<product>
<name>name</name>
<sku>foo</sku>
<description>description</description>
</product>
<product>
<name>name</name>
<sku>bar</sku>
<description>otherdescription</description>
</product>
</products>
は、これまでのところ、私は別の子要素にオプションの属性を移動するために、XSLTを使用して、重複要素のカップルの名前を変更することができましたしかし、オプションの2番目の製品要素を作成しています。どのようなxlstトランスフォームで出力が得られますか?
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="prodoption/@*">
<xsl:element name="{name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
<xsl:template match="prodoption/code">
<sku>
<xsl:apply-templates select="@* | node()"/>
</sku>
</xsl:template>
<xsl:template match="prodoption/@code">
<xsl:element name="sku">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
<xsl:template match="prodoption/@description">
<xsl:element name="name2">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
おかげ
あなたのコードを最初から書き直すのではなく、修正できるように、あなたの試みを投稿してみませんか? –
完了済み申し訳ありません –
もし一致すればいいと思います。私は与えられたXMLで 'prodoption'を見ません。 –