删除空的xmlns属性

时间:2018-10-11 13:15:34

标签: xml xslt xslt-1.0

这是我的输入xml // Rotate else if (Input.GetKeyDown(KeyCode.UpArrow)) { transform.Rotate(0, 0, -90); // See if valid if (isValidGridPos()) // It's valid. Update grid. updateGrid(); else // It's not valid. revert. transform.Rotate(0, 0, 90); }

这是我的xsl

<a><b><![CDATA[This is a text]]></b></a>

这是输出xml-

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
version="1.0">

<xsl:template match="/">
 <xsl:apply-templates select="//b" />
</xsl:template>

<xsl:template match="b">
 <xsl:choose>                                                       
  <xsl:when test=".='This is a text'">
    <e xmlns="www.example.com">
      <f>yes</f>
      <g>
          <xsl:call-template name="atemp"/>
      </g>
    </e>
  </xsl:when>                                                                      
  <xsl:otherwise>
   <d>NO</d>                                                         
  </xsl:otherwise>
 </xsl:choose>
</xsl:template>

<xsl:template name="atemp">
  <l>l</l>
  <m>m</m>
  <n>n</n>
</xsl:template>

</xsl:stylesheet>

我希望<?xml version="1.0" encoding="UTF-8"?> <e xmlns="www.example.com"> <f>yes</f> <g> <l xmlns="">l</l> <m xmlns="">m</m> <n xmlns="">n</n> </g> </e> 标记中的xmlns=""消失。此代码是大型Java项目的一部分。有趣的是,即使我们两个人都使用相同的代码,这些l,m,n也不会在同事的计算机中生成。这是运行代码http://xsltfiddle.liberty-development.net/3NzcBtS/1

这是我想要的输出-

xmlns=""

我该怎么办?

1 个答案:

答案 0 :(得分:3)

更改

<xsl:template name="atemp">
  <l>l</l>
  <m>m</m>
  <n>n</n>
</xsl:template>

<xsl:template name="atemp">
  <l xmlns="www.example.com">l</l>
  <m xmlns="www.example.com">m</m>
  <n xmlns="www.example.com">n</n>
</xsl:template>

,以便将lmn放在www.example.com命名空间中。由于www.example.com的默认名称空间已经在e上声明,并且由于这些元素是e的后代,因此您将根据要求从这些元素中删除xmlns=""。 / p>


或者,通过@TimC的一个很好的建议将其排除在xsl:template之外:

<xsl:template name="atemp" xmlns="www.example.com">
  <l>l</l>
  <m>m</m>
  <n>n</n>
</xsl:template>

或者,一路考虑到xsl:stylesheet

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0"
                xmlns="www.example.com">