【发布时间】:2011-01-06 03:00:58
【问题描述】:
我是 XSL 的新手,需要帮助解决转换问题。我有一个由 XSD 描述的 XML 文件。我使用 XSL 文件将 XML 转换为 HTML。我想在 XML 文件中引用 XSD,但是当我这样做时,XML 没有得到转换。
示例 XML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="example.xsl"?>
<root>
<!--
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://localhost" xsi:schemaLocation="http://localhost example.xsd">
-->
<element>Element 1</element>
<element>Element 2</element>
<element>Element 3</element>
</root>
XSL 示例:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<ul>
<xsl:for-each select="root/element">
<li><xsl:value-of select="."/></li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
XSD 示例:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://localhost"
xmlns="http://localhost"
elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="element" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
在 XML 中,如果我使用注释掉的根标记,Firefox 和 Chrome 不会转换 xml。但是,如果我只使用普通的
如果我在 XML 中引用 XSD,谁能解释为什么 XSL 转换不会发生?任何帮助表示赞赏!
【问题讨论】:
-
好问题,+1。请参阅我的答案以获取解释和完整解决方案。 :)
-
除了@Dimitre 正确答案,请注意,可以为 null(或空)命名空间 URI 下的元素定义架构