【问题标题】:Stylesheet: SchemaLocation attribute样式表:SchemaLocation 属性
【发布时间】:2014-08-10 12:16:18
【问题描述】:

在我的研究中,一旦我们有了可用的 XML 模式实例命名空间,我们就可以使用 schemaLocation 属性。

就它们在 XML 标记中的位置而言,命名空间是否总是在模式位置之前?

这是我的样式表代码。

CarriageDelivery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:SchemaLocation="Carriage_Delivery.xsd"

我正在尝试像这样切换xmlns:xsi 属性和xsi:SchemaLocation 的位置..

CarriageDelivery xsi:SchemaLocation="Carriage_Delivery.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

但在我生成的输出中,什么也没发生。

CarriageDelivery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="Carriage_Delivery.xsd"

我希望我能解释为什么它总是最后出现。

【问题讨论】:

  • 我的猜测是您使用的库是按上述顺序实现的,两个声明的顺序应该没有语义差异。
  • 顺序没有区别。我相信大多数处理器在序列化输出时会将命名空间放在属性之前,仅仅是因为这样做很方便。

标签: xml xslt xsd schema


【解决方案1】:

XML spec 表示给定元素上的属性顺序并不重要。所以 对于任何下游应用程序而言,xmlns:xsi 是否出现在 xsi:SchemaLocation 之前都无关紧要,反之亦然。出于这个原因,大多数输出​​ XML 的程序(通常包括 XSLT 处理器)都不能控制或保证它们输出属性的顺序。

您能解释一下为什么要指定顺序吗?应该没关系,除了人的审美……

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
相关资源
最近更新 更多