首页 文章

当XSL转换命名空间页面脱机时该怎么办?

提问于
浏览
0

XSL要求在每个样式表的顶部:

的xmlns:XSL = “http://www.w3.org/1999/XSL/Transform”

如果命名空间中的url不完全正确,则抛出错误 .

今天,“http://www.w3.org/1999/XSL/Transform”处于离线状态 . 我无法进行任何转换 . 转换挂起,然后在网络请求超时时返回“意外的文件结束” . 如果我将名称空间声明中的URL更改为随机URL,则转换失败并显示错误,告诉我“http://www.w3.org/1999/XSL/Transform”是必需的xsl名称空间 .

那么我如何解决W3网站的问题呢?

2 回答

  • 1

    使用 xmlns:something="..." 声明XML namespace . 这样的命名空间只是一个字符串,有助于将独特的含义归属于元素名称,如 templatehref ,从而确保可以在单个文档中使用多个基于XML的语言,而不会产生混淆 .

    其中一些名称空间保留供W3C使用 . XSLT命名空间就是其中之一 . 一个正确的XSLT处理器将检查样式表是否声明了正确的命名空间,以确保没有不正确的解释 . 样式表的根元素应该在该XSLT名称空间中 .

    对于实际的命名空间值,'d usually have a URI (and most often a URL) since that'通常是一个很好的唯一标识符 . 但是,这个 should never be used to actually resolve to any online resources during XML processing . 虽然HTTP URL通常以不区分大小写的方式处理,并且可以使用字符的URL编码(例如,空间变为 %20 ),但是在XML命名空间处理中不检查URL的这种解决方案或相等性 . XML中的命名空间只不过是一个字符串,它总是以其确切的形式,外壳和所有内容进行检查 .

    因此,如果一个XSLT处理器抱怨某个URL上的某些资源无法找到,那么要么它正在执行它不应该执行的操作,要么该问题与命名空间处理无关 .

    你正在使用Saxon,它绝对不是一个不理解命名空间概念的处理器 . 它的父亲是Michael Kay,他也负责XSLT 2.0规范 . 但Saxon确实支持模式感知的XSLT处理 . 如果文档指定了架构位置,那么使用它进行验证的处理器实际上将使用该位置来获取架构 . 这与名称空间的区别 . DTD和XML Schema位置肯定会导致网络活动 .

    所以我建议你检查一下......

    • XML使用带有外部定义的DTD以及它们是否可用;

    • XML指定架构位置以及是否可以到达该位置;

    • 样式表使用模式或其他一些外部资源以及是否可用 .

    找到原因后,请考虑将XML目录与处理器结合使用 . 如果无法从URI解析XML目录,则允许您使用本地资源 .

  • 3

    简单回答: http://www.w3.org/1999/XSL/Transform isn 't a URL, it'只是一个字符串 . 如果W3C已经决定,那么's no reason it couldn'已经'ThisIsAnXsltStylesheet' . 按照惯例,它们通常类似于URL 's, but this isn' t .

    因此,该URL没有任何内容与样式表失败的原因无关,而且肯定不会是原因 . 从逻辑上讲,如果是这种情况,那么没有互联网连接的人将无法使用XSLT,而w3c的服务器将会严重过度工作 .

    我建议在你的问题中添加XSLT的前几行;它可能会解释你的问题究竟在哪里 .

相关问题