我正在寻找一个可以删除名称空间前缀以及空标签的XSLT,我在论坛中搜索过我发现两个单独的XSLT来实现这一点,我试图找到一个可以同时执行这两个操作的XSLT。
请注意我在XSLT中不太精通,所以在这里寻求帮助。
source xml:
<ns1:DSBookingDetail xmlns:ns1="http://example.com">
<ns1:BookingNo>000123</ns1:BookingNo>
<ns1:SeqNo>1</ns1:SeqNo>
<ns1:LineType>Item</ns1:LineType>
<ns1:ProductCode>Box</ns1:ProductCode>
<ns1:ProductCategory></ns1:ProductCategory> <!-- empty tag -->
</ns1:DSBookingDetail>
target xml :(删除名称空间前缀后为空标记)
<DSBookingDetail>
<BookingNo>000123</BookingNo>
<SeqNo>1</SeqNo>
<LineType>Item</LineType>
<ProductCode>Box</ProductCode>
</DSBookingDetail>
答案 0 :(得分:1)
您可以使用local-name()
作为新名称重建所有元素,并检查其内容是否同时为空。
<xsl:template match="*[normalize-space(.)]"> <!-- only match non-empty elements -->
<xsl:element name="{local-name()}"> <!-- reconstruct element without namespace-prefix -->
<xsl:apply-templates select="node()|@*" /> <!-- recurse further -->
</xsl:element>
</xsl:template>