XML架构 - 我做错了什么?

时间:2016-11-15 11:21:32

标签: xml xsd xsd-validation xml-validation

我有一个关于相同代码的新问题。现在我在XML文件中的所有单词(原始示例中只有一个,但我的文件中有更多)都有id:s,如下所示:

<words id="wordone">clock</words> 
<words id="wordtwo">sleep</words>

现在我必须更改我的XML架构中的代码,但我无法弄清楚如何。我现在有这个:

<xsd:element name="words" type="xsd:string" maxOccurs="unbounded" />

而且我认为这样可行,因为单词的名称仍然是“单词”,但我收到错误。我错过了什么?

我是新手,我需要一些帮助。 :)这是我的第一次尝试,我的XML架构如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!-- File Name: words.xsd -->

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

<xsd:annotation>
    <xsd:documentation>
        Lexicon spanish english
    </xsd:documentation>
</xsd:annotation>
<xsd:element name="english">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="listwords"/>
            <xsd:element name="language" type="xsd:string"/>
            <xsd:element name="authur" type="xsd:string"/>
            <xsd:element name="allwords" type="xsd:string"/>
            <xsd:element name="words" type="xsd:string" maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType>  
</xsd:element>
</xsd:schema>

和我的XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="main.css"?>
<english xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="words.xsd">
<!-- Filename: english.xml -->
<!-- Authur: FL -->
<!-- Date: 2016-11-15 -->

<listwords>
    <language>English</language>
    <authur>FL</authur>
    <allwords>
        <words>clock</words>    
    </allwords>
</listwords>

错误:“XML文档结构必须在同一实体内开始和结束。”

帮助? :)

1 个答案:

答案 0 :(得分:1)

您必须在文件底部添加<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/css" href="main.css"?> <english xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="words.xsd"> <!-- Filename: english.xml --> <!-- Authur: FL --> <!-- Date: 2016-11-15 --> <listwords> <language>English</language> <authur>FL</authur> <allwords> <words>clock</words> </allwords> </listwords> </english>

IndexResponse response = client.prepareIndex(indexName, documentName)
            .setSource(mapper.writeValueAsString(data))
            .get();