使用XSLT从XML的元素名称中删除字符串?

时间:2014-07-09 06:32:52

标签: xml string xslt replace

我的XML看起来像这样。

<?xml version="1.0" encoding="utf-8"?>
 <ns0:Respuesta xmlns:ns0="http://www.siebel.com/xml/SBL_EAI_RC13_SC03_HPFMS_ConsultaTajetadeCreditoenBlackList_29004_Respuesta">
  <ns0:Error>
   <ns0:Codigo>30</ns0:Codigo>
   <ns0:Descripcion>Numero no encontrado en la lista</ns0:Descripcion>
   <ns0:Sistema>adaptadorCFMS</ns0:Sistema>
   <ns0:Tipo>Adaptador</ns0:Tipo>
   <ns0:TimeStamp>2014-06-26T14:40:42</ns0:TimeStamp>
   <ns0:IdHost>medusa10</ns0:IdHost>
  </ns0:Error>
 </ns0:Respuesta>

我需要删除'ns0:'部分元素。它不一定需要'ns0:',它可以是'ns1:'或'ns2:,因此所有那些看起来像'ns'需要的那些需要即将被删除。

'ns0:'也作为名称空间xmlns属性中的后缀出现,也需要删除。

所以输出xml应该是这样的。

<?xml version="1.0" encoding="utf-8"?>
 <Respuesta xmlns="http://www.siebel.com/xml/SBL_EAI_RC13_SC03_HPFMS_ConsultaTajetadeCreditoenBlackList_29004_Respuesta">
 <Error>
  <Codigo>30</Codigo>
  <Descripcion>Numero no encontrado en la lista</Descripcion>
  <Sistema>adaptadorCFMS</Sistema>
  <Tipo>Adaptador</Tipo>
  <TimeStamp>2014-06-26T14:40:42</TimeStamp>
  <IdHost>medusa10</IdHost>
 </Error>
</Respuesta>

你能帮我解决这个问题吗?我非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

编写一个模板,使用例如

从元素节点中剥离名称空间前缀
<xsl:template match="*">
   <xsl:element name="{local-name()}" namespace="{namespace-uri()}">
     <xsl:apply-templates select="@* | node()"/>
   </xsl:element>
</xsl:template>

然后添加模板复制属性,注释,文本

<xsl:template match="@* | text() | processing-instruction() | comment()">
  <xsl:copy/>
</xsl:template>