하나의 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>
내가 하나를 원하지 않는 출력을 얻고 입력으로 다음과 같은 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 파일 order.Here에 따라 일어날 필요가 XSL 템플릿 내부에 관계없이 조건입니다 내 xsl 템플릿에서 trycatch 전에 retract 조건이 있다면 condition.hence "retract"에 대한 번역이 먼저 발생하고 trycatch 태그를 번역하여 입력 x ml는 태그를 철회하기 전에 trycatch 태그를 포함합니다.
입력 XML 콘텐츠 순서에 따라 번역을 수행 할 수있는 몇 가지 지침을 제공해주십시오. 그러나 원하는 출력은 다음과 같습니다 (입력 xml 순서대로).
나는 당신의 문제를 자세하게 연구하지는 못했지만, 한눈에 'brl : retract | retract! = '''.. 이것이 'brl : retract | brl : 철회! = '''? 즉 네임 스페이스가'retract' 요소에 대한 두 번째 참조에서 지정되지 않았습니다. – Flynn1179
예. brl입니다. 철회 | retract! = ''only.sometimes xml 파일은 네임 스페이스와 함께 제공 될 수도 있고 네임 스페이스가 필요없는 경우도 있습니다.이 두 가지 시나리오를 모두 추가했습니다. – mohan