以前从来没有用过 schema, 这次希望能给我的 XML 文件加上 namespace, schema, 然后用 xslt 转换成 HTML, 没想到花了不少功夫。现在我把工作正常的结果记录下来,希望对大家有些帮助。
先来看看我的 XML 文件。打算用来定义网页的菜单。
很简单的 XML 文件,抛开弯路不提,用 XMLspy 的 Generate Schema 功能自动生成 schema 文件,然后做些小修改,结果如下:
其中,http://www.hz-sp.com/2005/XMLSchema-menu 是我的namespace. 然后在XML中用XMLspy 的 Assign Schema 功能指定这个 xsd ,XML 中的根节点 menu_items 被为:
接下来创建 xslt 文件,同样只给出正确的结果:
令人恼火的是,xpath-default-namespace="http://www.hz-sp.com/2005/XMLSchema-menu" 对 xsl:template 的 match 没有效果,估计match 中并非 xpath。但是这个属性对 for-each 中的 select 同样没有起作用,这就比较奇怪了,估计我还没有理解这个属性该怎么使用。

