我要求xsl变量包含xml。
<xsl:variable name="file" select="document('abc.xml')"/>
abc.xml只是一些示例xml <a>1<b>2</b>3</a>
现在我必须修改/添加变量$ file的元素,并将结果分配给另一个变量..
我的输入将是
<Service name="CBI" detailedLog="false">
<PolicyRules type="default">
<EndPoints>
<EndPoint source="Src" target="ET" serviceoperation="AV01">
<Url>http://firstbackend.com</Url>
</EndPoint>
<EndPoint source="Src" target="ET" serviceoperation="PV01">
<Url>http://secondbackend</Url>
</EndPoint>
</EndPoints>
</PolicyRules>
</Service>
我必须和$ file一起获取标签。我需要以下输出..
<a>1<b>2</b>
<Url>http://firstbackend.com</Url>
<Url>http://secondbackend</Url>
3</a>
有人可以帮助我吗
答案 0 :(得分:1)
将主输入文档存储到全局变量中,例如
<xsl:variable name="main-doc" select="/"/>
然后为要转换的元素编写模板,例如
<xsl:template match="a">
<xsl:copy>
<xsl:copy-of select="b | b/preceding-sibling::node()"/>
<xsl:copy-of select="$main-doc//Url"/>
<xsl:copy-of select="b/following-sibling::node()"/>
</xsl:copy>
</xsl:template>
然后应用模板并存储在变量中(如果需要),例如
<xsl:variable name="rtf1">
<xsl:apply-templates select="$file/node()"/>
</xsl:variable>
然后使用该变量输出结果,例如
<xsl:template match="/">
<xsl:copy-of select="$rtf1"/>
</xsl:template>