XSL for <schema xmlns =“http://www.w3.org/2001/XMLSchema”> </schema>

时间:2011-05-09 11:23:45

标签: xml xslt

<schema xmlns="http://www.w3.org/2001/XMLSchema">

的等效XSL样式表是什么

1 个答案:

答案 0 :(得分:0)

更新:OP提供了他的代码。

使用

<xsl:for-each select="x:schema/x:element">

而不是

<xsl:for-each select="schema/element">

搜索/阅读“XPath中的默认命名空间”。这是 F A Q

此转化

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:x="http://www.w3.org/2001/XMLSchema">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">
     <xsl:value-of select="/x:schema/x:a/x:b/x:c"/>
 </xsl:template>
</xsl:stylesheet>

应用于此XML文档时

<schema xmlns="http://www.w3.org/2001/XMLSchema">
 <a>
  <b>
   <c>d</c>
  </b>
 </a>
</schema>

产生想要的结果

d

解释:XPath表达式中任何未加前缀的名称始终被视为“无名称空间”。如果XML文档具有默认命名空间,则此文档的任何元素都在默认命名空间中(不在“无命名空间”中。因此,对于此类文档,未加前缀的名称不会选择任何节点 - 因为不是单个节点这个文件是“没有命名空间”。