Xslt 转换为SVG文件时出现XSL命名空间问题

Xslt 转换为SVG文件时出现XSL命名空间问题,xslt,svg,namespaces,Xslt,Svg,Namespaces,我正在从一些AltoXML文件制作一个简单的SVG文件。除了一个恼人的名称空间问题外,我已经让它工作了 源xml的标题(我不应该更改)是 ,但所有模板规则都不匹配命名空间中的元素 网址: 如果我删除行xmlns=”http://www.loc.gov/standards/alto/ns-v2#“从源代码看,我的转换非常有效。。。但我不想为了让这个脚本正常工作而不得不修改和取消修改数百个这样的文件。所以我真的需要一个修改来修复xsl。我曾尝试将alto行添加到xsl工作表中,但这只会导致“已经有名

我正在从一些AltoXML文件制作一个简单的SVG文件。除了一个恼人的名称空间问题外,我已经让它工作了

源xml的标题(我不应该更改)是

,但所有模板规则都不匹配命名空间中的元素
网址:


如果我删除行
xmlns=”http://www.loc.gov/standards/alto/ns-v2#“
从源代码看,我的转换非常有效。。。但我不想为了让这个脚本正常工作而不得不修改和取消修改数百个这样的文件。所以我真的需要一个修改来修复xsl。我曾尝试将alto行添加到xsl工作表中,但这只会导致“已经有名称空间”错误。

正如警告消息所示,源XML中的所有元素都在
http://www.loc.gov/standards/alto/ns-v2#
名称空间,因此您需要将此名称空间绑定到样式表中的前缀:

<xsl:stylesheet version="1.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:a="http://www.loc.gov/standards/alto/ns-v2#"
   >

这样,像
/alto
这样的路径将匹配相关命名空间中的元素。

正如警告消息所示,源XML中的所有元素都在
http://www.loc.gov/standards/alto/ns-v2#
名称空间,因此您需要将此名称空间绑定到样式表中的前缀:

<xsl:stylesheet version="1.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:a="http://www.loc.gov/standards/alto/ns-v2#"
   >

有了它,像
/alto
这样的路径将匹配相关名称空间中的元素。

您还没有向我们展示任何模板,Saxon警告是关于模板的,但我认为您希望使用

<xsl:stylesheet version="2.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns="http://www.w3.org/2000/svg"
   xpath-default-namespace="http://www.loc.gov/standards/alto/ns-v2#"
   >

您没有向我们展示任何模板,Saxon警告是关于模板的,但我认为您希望使用

<xsl:stylesheet version="2.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns="http://www.w3.org/2000/svg"
   xpath-default-namespace="http://www.loc.gov/standards/alto/ns-v2#"
   >


这完美地解决了我的问题,非常感谢!这完美地解决了我的问题,非常感谢!
<xsl:stylesheet version="2.0" 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns="http://www.w3.org/2000/svg"
   xpath-default-namespace="http://www.loc.gov/standards/alto/ns-v2#"
   >