2010-08-13 103 views
1

我有一个XML架构XML问题<属性REF = “...”>

<xs:complexType> 
... 
<xs:attribute ref="unaryOperator"></xs:attribute> 
</xs:complexType> 


<xs:attribute name="unaryOperator"> 

我尝试使用它在我的xml文件 这样

<inv_constraint unaryOperator="not"> 

编辑器给我这个错误:

描述资源路径位置类型 [Xerces] cvc-complex-type.3.2.2:属性'unaryOperator'不允许出现在元素'inv_constraint'中。 @see:http://www.w3.org/TR/xmlschema-1/#cvc-complex-type abc.xml/PROVA线28 XML问题

编辑建议我做这样的

<inv_constraint xmlns:ns1="http://abc/abcd" ns1:unaryOperator="not" > 

如果我不XML模式中使用ref,只是复制粘贴属性而不是引用它,然后我的XML文件的作品,

所以我的问题是我如何使我的xml没有那个怪异的标记,并保持ref在XML模式?

回答

0

我在这里没有看到任何问题。以下作品对我罚款:

schema.xsd:

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:complexType name="ct"> 
    <xs:attribute ref="unaryOperator"/> 
</xs:complexType> 

<xs:attribute name="unaryOperator"/> 

<xs:element name="inv_constraint" type="ct"/> 

</xs:schema> 

file.xml:

<?xml version="1.0"?> 
<inv_constraint unaryOperator="non" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd"></inv_constraint> 

我测试过它:Xerces的,萨克森,XSV和一些其他的验证器。

所以,如果你仍然有这样的问题:

  1. 提供完整的例子 - 简化架构文件和XML文件上,我们可以重现此问题。
  2. 你使用什么编辑器?
+1

是的,我同意它的作品,我想我没有解释自己很好, 我想你schema.xsd 这file.xml 没有这一项: <?xml version =“1.0”?> 为什么我必须把这些奇怪的标签(xmlns:xsi =”http://www.w3.org/2001/XMLSchema-instance“xsi:noNamespaceSchemaLocat离子=“schema.xsd”)使file.xml工作? 谢谢 – max4ever 2010-08-15 09:35:08

+0

作为编辑器我使用oXygenl XML插件用于Eclipse – max4ever 2010-08-15 09:36:26

+1

没有这个属性,它不能自动验证它,我想。尽管你可以在oXygen Editor中使用外部验证或验证场景(我没有插件来测试)。以下是oXygen如果尝试验证没有模式声明属性的文档:“没有与文档关联的模式或DTD,您可以使用关联模式操作或在选项中配置首选项/文档类型关联列表,或者通过创建验证方案“ – Shcheklein 2010-08-15 18:54:29