xml形式を他のxml形式に変換するには、私はxslを使用しています。私のxslファイルにはいくつかのテンプレートが書かれています。 私は以下のようにいくつかの問題を翻訳オーダーに直面しています。xslを使用したxmlファイルの順序に基づく構文解析
私のXSLテンプレート:
<xsl:template match="rhs" name="rhsTemplate">
<xsl:if test="brl:retract | retract!= ''">
<xsl:for-each select="brl:retract | retract">
<xsl:element name="freeForm">
<xsl:element name="text">
<xsl:apply-templates select="." />
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:if>
<xsl:if test="brl:tryCatchBlock | tryCatchBlock!= ''">
<xsl:if test="brl:tryCatchBlock/brl:try | tryCatchBlock/try!= ''">
<xsl:element name="freeForm">
<xsl:element name="text">
<xsl:text>try{</xsl:text>
</xsl:element>
</xsl:element>
</xsl:template>
私は1を希望されていない出力を取得しています入力として、次のXMLファイルを送信します。
<rhs>
<tryCatchBlock identifier="8" order="0">
<try>
</try>
</tryCatchBlock>
<retract identifier="1" order="1">
<variableName>$Event1</variableName>
</retract>
出力:
<freeForm>
<text>retract($Event1);</text>
</freeForm>
<freeForm>
<text>try{</text>
</freeForm>
所望の出力:
<freeForm>
<text>try{</text>
</freeForm>
<freeForm>
<text>retract($Event1);</text>
</freeForm>
私のrequirmentは、翻訳は、入力XMLファイルに基づいて発生する必要がXSLテンプレート内の条件にかかわらず、であるorder.Here私のxslテンプレートで私は持っています私は持っていますtrycatchの前に収縮のための条件 "retract"のための翻訳が起こっている場合condition.hence最初に翻訳してtrycatchタグ私の入力x mlには、retractタグの前にtrycatchタグが含まれています。
入力XMLコンテンツの順序に基づいて翻訳を行うためのいくつかのポインタを提供してください。 しかし、希望の出力は以下の通りです(入力xmlの順)。
私はあなたの問題を詳細に研究していませんが、一見すると 'brl:retract | retract!= '' '..これは' brl:retract | brl:retract!= '' '?すなわち、名前空間は 'retract'要素への2番目の参照で指定されていません。 – Flynn1179
ええ、それはbrlです:retract | retract!= '' only.sometimes xmlファイルにnamespaceが付いてくることがありますが、これを処理するためにnamespace.toを使用しない場合もあります。両方のシナリオを追加しました。 – mohan