0
要將一個xml格式轉換爲其他xml格式,我使用xsl.I在我的xsl文件中寫入了幾個模板。 我正在面對一些問題,如下翻譯順序。解析基於XML文件順序使用xsl
我的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>
當我發送下面的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>
我是需求量的不管條件的XSL模板翻譯需要做的基於XML輸入文件order.Here內在我的xsl模板中,如果condition.hence翻譯爲「縮回」首先發生,然後它翻譯trycatch標記,雖然我的輸入x ml在收回標籤之前包含trycatch標籤。
請爲我提供一些指導,根據輸入的xml內容順序進行翻譯。 但是所需的輸出如下(根據輸入xml順序)。
我還沒有詳細研究過你的問題,但是一目瞭然,你已經有'brl:retract |撤回!='''..應該是'brl:撤回| brl:收回!='''?即在第二次引用'retract'元素時沒有指定名稱空間。 – Flynn1179
是的,它是brl:縮回|只有。有時xml文件可能帶有命名空間,有時沒有命名空間。爲了處理這個問題,我添加了兩個senarios。 – mohan