XSLT中需在stylesheet根元素声明命名空间用于匹配输入和生成输出,前缀与URI必须一致且准确;避免拼接URI、复用前缀,可用exclude-result-prefixes抑制冗余输出,XSLT 2.0+支持xsl:namespace动态处理。
在XSLT中正确声明和使用命名空间,是处理带命名空间的XML输入或生成符合规范的XML输出的关键。核心原则是:**输入匹配要声明、输出生成要声明、前缀必须一致、URI必须准确**。
声明命名空间用于匹配输入XML
如果源XML文档中的元素属于某个命名空间(例如 ),XSLT无法用 match="urlset" 直接匹配——必须先在 根元素中声明该命名空间,并在XPath中使用对应前缀:
- 在样式表根节点添加命名空间声明,如:
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9" - 模板匹配改写为:
- 子元素访问也需加前缀:
声明命名空间用于生成目标XML
若要输出带命名空间的XML(如OAI-PMH、SOAP、Atom等标准格式),需在模板中直接写入命名空间声明属性,并确保前缀与样式表顶层声明一致: