0

我找不到问题尝试不同的东西。我真的很感激任何帮助。我有一个有效的 .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:“序列”的内容必须匹配(注解?,(元素|组|选择|序列|任何))。发现问题始于:属性。

编辑:如果我也上传 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>
4

2 回答 2

1

如错误消息中所述,<sequence>元素不能包含任何<attribute>元素。此外,查看例如这些 docs<sequence>不应直接嵌套在<element>.

此外,您的<sequence>元素缺少xs名称空间前缀。

至于解决方案,请替换<sequence><xs:complexType>,您应该没问题。

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

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

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

<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>
于 2013-10-13T09:20:20.353 回答
0

您的 XSD 中不能有一系列属性。zhaw可能需要定义为complexTypehttp://msdn.microsoft.com/de-de/library/ms256106.aspxsimpleContent中可以看到(示例)

<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>
于 2013-10-13T09:19:39.180 回答