简体   繁体   English

针对XSD的XML验证:元素不能包含字符,因为类型的内容类型仅是元素

[英]XML validation against XSD: Element cannot have character, because the type's content type is element-only

XML: XML:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <ac code="JL" auto="1">
        <fee>10e</fee>
        <comission>
            <if country="JP">5%</if>
            <else>7%</else>
        </comission>
    </ac>
    <ac code="B2" auto="1">
        <fee>
            <if country="RU">35e 50e 50e 80e 15e 10e</if>
            <else>10e</else>
        </fee>
        <comission>
            <if country="RU">3%</if>
            <else>5%</else>
        </comission>
    </ac>
</data>

And XSD Schema : XSD架构

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <xs:element name="data" type="data"/>
 <xs:complexType name="data">
  <xs:sequence>
   <xs:element name="ac" minOccurs="0" maxOccurs="unbounded" type="ac"/>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="ac">
  <xs:sequence>
   <xs:element name="fee" type="feecomiss"/>
   <xs:element name="comission" type="feecomiss"/>
  </xs:sequence>
  <xs:attribute name="code" type="xs:string"/>
  <xs:attribute name="auto" type="xs:decimal"/>
 </xs:complexType>

 <xs:complexType name="feecomiss">
  <xs:sequence>
   <xs:element name="if" type="if" minOccurs="0" />
   <xs:element name="else" type="xs:string" minOccurs="0"/>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="if">
 <xs:simpleContent>
  <xs:extension base="xs:string">
   <xs:attribute name="country" type="xs:string" use="optional"/>
  </xs:extension>
 </xs:simpleContent>
</xs:complexType>      

</xs:schema>

This scheme is not working because of the fact that the first element of the "fee" has no elements "if" and "else" 由于“费用”的第一个元素没有元素“ if”和“ else”,因此该方案不起作用

Any ideas? 有任何想法吗? Sorry for bad english =) 对不起,英语不好=)

I think your schema should look like this: 我认为您的架构应如下所示:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="data">
<xs:complexType>
  <xs:sequence>
    <xs:element maxOccurs="unbounded" name="ac">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="fee">
            <xs:complexType mixed="true">
              <xs:sequence minOccurs="0">
                <xs:element name="if">
                  <xs:complexType>
                    <xs:simpleContent>
                      <xs:extension base="xs:string">
                        <xs:attribute name="country" type="xs:string" use="required" />
                      </xs:extension>
                    </xs:simpleContent>
                  </xs:complexType>
                </xs:element>
                <xs:element name="else" type="xs:string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>

          <xs:element name="comission">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="if">
                  <xs:complexType>
                    <xs:simpleContent>
                      <xs:extension base="xs:string">
                        <xs:attribute name="country" type="xs:string" use="required" />
                      </xs:extension>
                    </xs:simpleContent>
                  </xs:complexType>
                </xs:element>
                <xs:element name="else" type="xs:string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="code" type="xs:string" use="required" />
        <xs:attribute name="auto" type="xs:unsignedByte" use="required" />
      </xs:complexType>
    </xs:element>
  </xs:sequence>
</xs:complexType>

I generated this schema defitinition up to your xml document given in question. 我生成了这个架构分解,直到有问题的xml文档为止。
Hope this helps 希望这可以帮助
Myra 玛拉

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 元素“设置”不能包含字符[children],因为类型的内容content-type仅是元素 - Element 'settings' cannot have character [children] because the type's content content-type is element-only 元素不能有字符 [children],因为该类型的内容类型是 element-only - Element cannot have character [children], because the type's content type is element-only 元素&#39;price&#39;不能包含字符[children],因为类型的内容类型仅为元素 - Element 'price' cannot have character [children], because the type's content type is element-only cvc-complex-type.2.3:元素“group”不能有字符 [children],因为该类型的内容类型是 element-only - cvc-complex-type.2.3: Element 'group' cannot have character [children], because the type's content type is element-only cvc-complex-type.2.3:元素“项目”不能包含字符[children],因为类型的内容类型仅是元素 - cvc-complex-type.2.3: Element 'project' cannot have character [children], because the type's content type is element-only cvc-complex-type.2.3:元素 'wsdl:definitions' 不能有字符,因为该类型的内容类型是仅元素。 当 xml 被验证时 - cvc-complex-type.2.3: Element 'wsdl:definitions' cannot have character, because the type's content type is element-only. when the xml is validated 验证XSD文件时出现问题:派生类型的内容类型及其基类的内容类型必须是混合的,或者两者都是仅元素的 - Problem validating an XSD file: The content type of a derived type and that of its base must both be mixed or both be element-only 元素必须没有字符或元素信息项[children],因为类型的内容类型为空 - Element must have no character or element information item [children], because the type's content type is empty XmlBeans-针对类型而非元素的XSD验证 - XmlBeans - XSD validation against a type, not element 针对XSD的XML验证:元素必须没有字符或元素信息项 - XML validation against XSD: Element must have no character or element information item
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM