【问题标题】:XSD validation - sequence of attributes - exceptionXSD 验证 - 属性序列 - 异常
【发布时间】:2013-10-21 00:44:33
【问题描述】:

我尝试了不同的方法后找不到问题。我真的很感激任何帮助。 我有一个有效的 .xsd 文档,但更改了 xml 的某些部分,现在我无法使其有效,也没有找到错误。错误消息如下。有人看到那里出了什么问题吗?异常从属性序列开始的地方开始。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Projekt1" xmlns:proj="urn:Projekt1">
    <xs:element name="projekte" type="proj:ProjekteForm"/>

    <xs:complexType name="ProjekteForm">
        <xs:sequence>
            <xs:element name="person" type="proj:ProjekteForms" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="ProjekteForms">
        <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="link" type="xs:string"/>
            <xs:element name="zhaw" type="xs:string"/>
                <sequence>
                    <xs:attribute name="width" type="xs:integer"/>
                    <xs:attribute name="height" type="xs:integer"/>
                </sequence>
            <xs:element name="homepage" type="xs:string"/>
            <xs:element name="googlemapsx" type="xs:float"/>
            <xs:element name="googlemapsy" type="xs:float"/>
            <xs:element name="facebook" type="xs:string"/>
            <xs:element name="skype" type="xs:string"/>
            <xs:element name="twitter" type="xs:string"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:integer"/>
    </xs:complexType>
</xs:schema>

这里指的是什么内容?在文档的另一个地方,它也是这样工作的。

消息:
无效。 错误 - 第 16、52 行:org.xml.sax.SAXParseException;行号:16;列号:52; s4s-elt-must-match.1:“序列”的内容必须匹配(注解?,(元素|组|选择|序列|任何))。发现问题始于:属性。 错误 - 第 17、53 行:org.xml.sax.SAXParseException;行号:17;列号:53; s4s-elt-must-match.1:'sequence'的内容必须匹配(注解?,(元素|组|选择|序列|任何))。发现问题始于:属性。

编辑: 如果我也上传 xml 可能会有所帮助。但问题仅在于 .xsd 的有效性。

<?xml version="1.0" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="Projekt1.xsl" xmlns:x="urn:Projekt1" exclude-result-prefixes="x"?>
<x:projekte xmlns:x="urn:Projekt1">
    <person id= "1">
        <name>Franz Mommar</name>
        <link>http://www.dfki.de/~wahlster/Portrait_Photos/</link>
        <zhaw width="100" height="100">Portrait_Wahlster_Photo_by_Jim_Rakete.jpg</zhaw>
        <homepage>http://www.werni.ch</homepage>
        <googlemapsx>285.2342</googlemapsx>
        <googlemapsy>234.3598</googlemapsy>
        <facebook>franzmoammar</facebook>
        <skype>franz.moammar</skype>
        <twitter>franzmoammar</twitter>
    </person>
    <person id= "2">
        <name>Rüdiger Mannheim</name>
        <link>http://www.dfki.de/~wahlster/Portrait_Photos/</link>
        <zhaw width="100" height="100">Wahlster_Anschnitt_gross.jpg</zhaw>
        <homepage>http://www.humor.li</homepage>
        <googlemapsx>45.2342</googlemapsx>
        <googlemapsy>32.3598</googlemapsy>
        <facebook>rüdigermann</facebook>
        <skype>ruedi</skype>
        <twitter>geronimo</twitter>
    </person>
</x:projekte>

【问题讨论】:

    标签: xml xsd xsd-validation


    【解决方案1】:

    如错误消息中所述,&lt;sequence&gt; 元素不能包含任何 &lt;attribute&gt; 元素。另外,看看例如these docs&lt;sequence&gt; 不应直接嵌套在 &lt;element&gt; 中。

    另外,您的 &lt;sequence&gt; 元素缺少 xs 命名空间前缀。

    至于解决办法,把&lt;sequence&gt;换成&lt;xs:complexType&gt;,应该没问题。

    编辑:实际上,我不确定你的属性应该去哪里:

    • 它们应该是ProjekteForms 类型的属性吗?在这种情况下,请将它们与您的 id 属性一起放在该复杂类型定义的末尾。
    • 或者它们应该是您的&lt;zhaw&gt; 元素的属性?您的示例 Xml 建议了这一点,但是在您的 XSD 中,您对 &lt;zhaw&gt; 的定义没有包含带有属性的序列,因为您使用的是元素的单标签形式。将&lt;xs:element name="zhaw" type="xs:string"/&gt; 替换为&lt;xs:element name="zhaw"&gt;...&lt;/xs:element&gt;(内部带有属性的复杂类型)。请注意,您必须省略 type 属性,因为类型已由封闭的 &lt;xs:complexType&gt; 元素指定。要允许文本内容,请将属性 mixed="true" 添加到 &lt;xs:complexType&gt; 元素。

    后一种解决方案如下所示:

    <xs:element name="zhaw">
        <xs:complexType mixed="true">
            <xs:attribute name="width" type="xs:integer"/>
            <xs:attribute name="height" type="xs:integer"/>
        </xs:complexType>
    </xs:element>
    

    【讨论】:

    • 我试过你的解决方案,它奏效了。非常感谢!!! :) 它们应该是“zhaw”元素的属性。非常感谢!
    【解决方案2】:

    您的 XSD 中不能有一系列属性。 zhaw 可能需要用simpleContent 定义为complexType,如http://msdn.microsoft.com/de-de/library/ms256106.aspx 中所示(示例)

    <xs:element name="zhaw">
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:string">
            <xs:attribute name="width" type="xs:integer"/>
            <xs:attribute name="height" type="xs:integer"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多