2013-10-31 40 views
0

我指的元素书,并试​​图将此转换:转换XML的架构参考

<xsd:element name="book" type="bookType"/> 
<xsd:complexType name="bookType"> 
    <xsd:sequence> 
      ... 
    </xsd:sequence> 
</xsd:complexType> 

要这样:

<xsd:element name="book"> 
    <xsd:complexType name="bookType"> 
     <xsd:sequence> 
       ... 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

第一解析个XML,但第二个停止与验证错误:“无法解析模式文件”。

任何想法? XML语法检查器(记事本++插件)说,没有检测到错误。

回答

1

“内联”一个类型,即将其嵌套在另一个模式组件中,将禁止使用其属性name。当类型本身是xsd:schema元素下的第一级时,复合类型的名称属性被保留。

一个“正常”工具应该告诉你这样的“The'name'属性不能出现”,然后告诉你行和列的位置在哪里找到有问题的文本。有很多好的工具可以提供免费评估;下载每一个,一个接一个,它仍然会让你足够快地了解XSD,最重要的是,增加你的曝光度。只是不要在这里问,在这么好的工具可能是:)...

+0

所以这是一个规则的“事情”,我们必须遵循它......没有已知的绕过我猜? – user2692669

+1

@ user2692669,不,它是语言的一部分。它被命名(或“全局”,因此可引用)或“匿名”(本地,仅限于包含组件)。虽然有人问我为什么不允许命名,就像编程变量作用于语句块一样,我认为XSD已经很复杂了......为什么要这么麻烦呢? –

+0

XSD ..架构......它是一个完全不同的世界!谢谢架构师! – user2692669