私はXSLTで変換を行っています。私は兄弟を追加する必要があります。要素x及びyは、オプションから、必要に行くことを意味する、以下のXSDXSLT変換 - 不在の兄弟を追加する場合
<xs:complexType name="parent">
<xs:sequence>
<xs:element name="a" type="xs:string" minOccurs="0"/>
... more optional elements...
<xs:element name="x" type="xs:string"/>
<xs:element name="y" type="xs:string"/>
<xs:element name="z" type="xs:string"/>
</xs:sequence>
</xs:comlexType>
により与えられるXMLに
<xs:complexType name="parent">
<xs:sequence>
<xs:element name="a" type="xs:string" minOccurs="0"/>
... more optional elements...
<xs:element name="x" type="xs:string" minOccurs="0"/>
<xs:element name="y" type="xs:string" minOccurs="0"/>
<xs:element name="z" type="xs:string"/>
</xs:sequence>
</xs:comlexType>
:
Iは、以下のXSDによって与えられたXMLを形質転換してい行方不明の場合は追加する必要があります。
ケース1(何も追加すべきではない):
<parent>
<a>foo</a>
...
<x>foo</x>
<y>foo</y>
<z>foo</z>
</parent>
ケース2(xは追加する必要がある)
<parent>
<a>foo</a>
...
<y>foo</y>
<z>foo</z>
</parent>
これは私のXSLT変換は、以下の4つのケースを処理する必要があることを意味し
ケース3(yを追加する必要があります)
<parent>
<a>foo</a>
...
<x>foo</x>
<z>foo</z>
</parent>
ケース4(xおよびyは、添加されるべきである)
<parent>
<a>foo</a>
...
<z>foo</z>
</parent>
Iは、意図したとおりに動作しない以下のXSLTを試みた:
<xsl:template match="parent[not(x)]/y">
<xsl:element name="x">foo</xsl:element>
<xsl:call-template name="identity"/>
</xsl:template>
<xsl:template match="parent[not(x)]/z">
<xsl:element name="x">foo</xsl:element>
<xsl:call-template name="identity"/>
</xsl:template>
<xsl:template match="parent[not(y)]/z">
<xsl:element name="y">foo</xsl:element>
<xsl:call-template name="identity"/>
</xsl:template>
上記の場合の結果であります
ケース1 OK
<parent>
<a>foo</a>
...
<x>foo</x>
<y>foo</y>
<z>foo</z>
</parent>
ケース2 OK
<parent>
<a>foo</a>
...
<x>foo</x>
<y>foo</y>
<z>foo</z>
</parent>
ケース3ないOK
<parent>
<a>foo</a>
...
<x>foo</x>
<y>foo</y>
<x>foo</x>
<z>foo</z>
</parent>
ケース4ないOK
<parent>
<a>foo</a>
...
<y>foo</y>
<z>foo</z>
</parent>
どうしますか?どのように結果は期待された結果と異なるか? – Sim