这是我的输入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=""
我该怎么办?
答案 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>
,以便将l
,m
和n
放在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">