可以将URL用作XML中的xsl引用

时间:2011-12-09 18:26:21

标签: java xml xslt

关于从XML引用XSL样式表的快速问题......

到目前为止,我一直使用UNC引用样式表,例如:

<?xml-stylesheet type="text/xsl" href="\\test\...

现在我正在考虑使用URL引用XSL,例如:

<?xml-stylesheet type="text/xsl" href="http://mysite.com/xsltest.xsl

然而这是失败的&#34;访问被拒绝错误处理 资源&#34; (即XSL)

所以只是为了确认 - 可以将URL用作XML中的XSL引用吗?

2 个答案:

答案 0 :(得分:0)

简短的回答是肯定的。您应该可以在任何现代浏览器中打开该XML并查看正在应用的XSL。

但总的来说,这取决于您如何处理XML - 例如,您可能能够在浏览器中打开该URL,但是因为代理或防火墙,XML处理器将无法使用。

答案 1 :(得分:0)

由于href pseudoattribute是一个IRI,它是一个国际化的URI - 它应该可以工作。

你不应该将UNC放在href pseudoattribute中(以及任何其他期望URI / IRI / URL的地方),因为它甚至不是有效的URI。

编辑 示例:

  1. 网址为href属性:

    <?xml-stylesheet type="application/xsl" href="http://www.domain.com/sheet.xsl" ?>. 
    
  2. URI(不是URL)作为href属性:

    <?xml-stylesheet type="application/xsl" href="urn:isbn:0451450523" ?>
    

    在这种情况下,它在语法上是正确的,但在语义上它没有意义(样式表由isbn引用;))此外,还有一些URI看起来像是URL(即使在开头使用http://)但是不指向任何事情。那是合法的。 URI只是一个标识符,而不是一个位置。

  3. IRI(不是URI)作为href属性

    <?xml-stylesheet type="application/xsl" href="urn:country:españa" ?> 
    

    也没有多大意义,但这只是一个例子。 IRI是URI的超集,支持unicode字符(示例中为ñ)。

  4. 在预期有IRI的情况下使用UNC不正确

    <?xml-stylesheet type="application/xsl" href="\\youserver\resource" ?>
    

    这是非法的。 UNC(统一命名约定)字符串不是IRI(因此不是URI也不是URL)。 xml-stylesheet定义仅允许IRI作为href属性的值,因此将UNC字符串放在那里是不正确的,你很幸运它工作。如果您尝试在任何非Windows操作系统中打开xml,它可能无法正常工作。