xslt - 删除 xsi :type using xslt

标签 xslt

我有以下 XML。我能够删除所有命名空间,但无法使用 XSL 删除 xsi:type。

XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<StudentResult xmlns='http://ns.xyz.org/2004-08-02' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:ns1='http://ns.xyz.org/2004-08-02' xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:type='ns1:StudentResult'>
<StudentId idOwner='xyz'><IdValue name='ClientId'>9103-XML</IdValue></StudentId>
<ClientOrderId idOwner='Cloud'><IdValue name='OrderNumber'>272454</IdValue></ClientOrderId>
<Results>false</Results>
</StudentResult>

期望的输出:

<?xml version="1.0" encoding="utf-8"?>
<StudentResult>
<StudentId idOwner="xyz"><IdValue name="ClientId">9103-XML</IdValue></StudentId>
<ClientOrderId idOwner="Cloud"><IdValue name="OrderNumber">272454</IdValue></ClientOrderId>
<Results>false</Results>
</StudentResult>

这是我使用的 xslt,但没有帮助。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml" encoding="utf-8" />
<xsl:template match="/|comment()|processing-instruction()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:template match="/">    
<xsl:apply-templates select="@*|node()|processing-instruction()"/>
</xsl:template>
</xsl:stylesheet>

最佳答案

添加模板

<xsl:template match="@xsi:type"/>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  exclude-result-prefixes="xsi">

在样式表的根元素上。

关于xslt - 删除 xsi :type using xslt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11283670/

相关文章:

perl - 如何从 perl 中删除 XML 中的特定元素

xml - 如何使用 XPath 和 XSLT 处理一组兄弟节点并根据其中两个兄弟节点处理特定的兄弟节点子集

xml - 通过 xslt 重新排列 xml 节点

XML:检查两个节点之间是否存在任何内容

xslt - 如何使用 Xpath 选择这些元素?

ruby-on-rails - 导出事件记录,包括 Rails 中的关系和附件

xslt - 在xslt中,选择具有id的项目,该值在变量中

XSLT - 处理多个子节点

xml - XSL 在 Google Chrome 中不起作用

java - 使用 XSLT 将 XML 转换为 HTML