2017-02-10 56 views
1

在XML架构中,如何定义呈现如下所示的ComplexType带有属性和字符串内容的XML元素

<ValidationError code="X501">I love cats!</ValidationError> 

如果我尝试以下方法我的工具*会说,这不是有效的

 <xsd:complexType name="ValidationErrorType"> 
      <xsd:attribute name="code" type="xsd:string"></xsd:attribute> 
      <xsd:simpleContent> 
       <xsd:extension base="xs:string"/> 
      </xsd:simpleContent> 
     </xsd:complexType> 

工具,我用的都是Altova公司的XMLSpy的可视化编辑和WSDL2Java生成的类

更新:我有试图another flavour

 <xsd:complexType name="ValidationErrorType"> 
      <xsd:simpleContent> 
       <xsd:extension base="xs:string"> 
        <xsd:attribute name="code" type="xsd:string" /> 
       </xsd:extension> 
      </xsd:simpleContent> 
     </xsd:complexType> 

的Altova说Invalid XML schema: 'Value 'xs:string' is not allowed for attribute 'base'.'

回答

1

好吧,我学到的教训

  1. 属性可以扩展simpleContent必须出现内extension
  2. 我输错在我的第二个例子中,xsd前缀这几乎是正确

正确的格式是

 <xsd:complexType name="ValidationErrorType"> 
      <xsd:simpleContent> 
       <xsd:extension base="xsd:string"> 
        <xsd:attribute name="code" type="xsd:string" /> 
       </xsd:extension> 
      </xsd:simpleContent> 
     </xsd:complexType> 
相关问题