<Report xmlns="https://defaultnamespace/abc">
<Conversion>
<Type>FirstElement</Type>
</Conversion>
<Conversion>
<Type>SecondElement</Type>
</Conversion>
<Conversion>
<Type>ThirdElement</Type>
</Conversion>
<Last>This is last element</Last>
</Report>
<?xml version=1.0 encoding=UTF-8?>
<xsl:stylesheet xmlns:cs="https://defaultnamespace/abc">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="/cs:Report/cs:Conversion/cs:Type">
<xsl:element name="Converting"><xsl:value-of select="."/></xsl:element>
</xsl:for-each>
<xsl:element name="LastOne"><xsl:value-of select="/cs:Report/cs:Last"/> </xsl:element>
</xsl:template>
</xsl:stylesheet>
当输入XML具有不同的命名空间时,上述XSLT失败。所以,我需要一个XSLT,它将从输入XML动态获取命名空间并进行转换。请建议我正确的解决方案。
需要进一步澄清要求请注释。提前谢谢。
有问候,Mani。
答案 0 :(得分:0)
您可以尝试以下
<div class="panel-content" ng-class="panel.contentClass" data-ng-bind-html="panel.content">
答案 1 :(得分:0)
您有一些选择,可以使用通配符
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="/*:Report/*:Conversion/*:Type">
<xsl:element name="Converting"><xsl:value-of select="."/></xsl:element>
</xsl:for-each>
<xsl:element name="LastOne"><xsl:value-of select="/*:Report/*:Last"/> </xsl:element>
</xsl:template>
</xsl:stylesheet>
或者您可以简单地声明两个名称空间
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:pf1="http://example.com/ns1" xmlns:pf2="http://example.com/ns2">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="/pf1:Report/pf1:Conversion/pf1:Type | /pf2:Report/pf2:Conversion/pf2:Type">
<xsl:element name="Converting"><xsl:value-of select="."/></xsl:element>
</xsl:for-each>
<xsl:element name="LastOne"><xsl:value-of select="/pf1:Report/pf1:Last | /pf2:Report/pf2:Last"/> </xsl:element>
</xsl:template>
</xsl:stylesheet>
答案 2 :(得分:0)
当您希望样式表在两个(或更多)/不同名称空间中对源XML进行操作时,我首选的解决方案是运行一个管道,该管道首先将XML转换为单个“规范化”命名空间,然后进行适当的转换。归一化阶段,假设它不必对内容进行任何更改,可以这样做:
<xsl:template match="node()">
<xsl:element name="{local-name()}" namespace="http://normalized.namespace/">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>