1

次の XML コンテンツがあります。

<?xml version="1.0" encoding="UTF-8"?>
<success>
  <accessedResource>/bioportal/provisional</accessedResource>
  <accessDate>2013-04-23 20:50:58.139 PDT</accessDate>
  <data>
    <classBean>
      <id>http://purl.bioontology.org/ontology/provisional/9cc8b147-e193-4d23-a3a1-9da34eeeb5a9</id>
      <fullId>http://purl.bioontology.org/ontology/provisional/9cc8b147-e193-4d23-a3a1-9da34eeeb5a9</fullId>
      <label>OzbbBugGbIINcdpSY</label>
      <synonyms>
        <string>ux0fBN http://www.ggiodpc.com/www.6shpFpANPwYnffbs9P5rsRN67oJWDZuQ.com.php</string>
      </synonyms>
      <definitions>
        <string>ux0fBN http://www.ggiodpc.com/www.6shpFpANPwYnffbs9P5rsRN67oJWDZuQ.com.php</string>
      </definitions>
      <relations>
        <entry>
          <string>provisionalRelatedNoteId</string>
          <string>Note_3df7809d-aac8-4cf8-b320-f3eecceacd4e</string>
        </entry>
        <entry>
          <string>provisionalTermStatus</string>
          <null/>
        </entry>
        <entry>
          <string>provisionalCreated</string>
          <date>2013-04-09 20:06:23.79 PDT</date>
        </entry>
        <entry>
          <string>provisionalPermanentId</string>
          <null/>
        </entry>
        <entry>
          <string>provisionalRelatedOntologyIds</string>
          <list>
            <int>1057</int>
          </list>
        </entry>
        <entry>
          <string>provisionalSubmittedBy</string>
          <int>38382</int>
        </entry>
        <entry>
          <string>provisionalUpdated</string>
          <null/>
        </entry>
        <entry>
          <string>provisionalSubclassOf</string>
          <org.openrdf.model.URI>
            <uriString>http://purl.bioontology.org/ontology/RID/RID0</uriString>
            <localNameIdx>-1</localNameIdx>
          </org.openrdf.model.URI>
        </entry>
      </relations>
    </classBean>
  </data>
</success>

次の XML スキーマを使用して検証したい:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
           targetNamespace="http://bioontology.org/bioportal/classBeanSchema#"
           xmlns:c="http://bioontology.org/bioportal/classBeanSchema#">
    <xs:element name="success">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="c:accessedResource"/>
                <xs:element ref="c:accessDate"/>
                <xs:element ref="c:data"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="accessedResource" type="xs:string"/>
    <xs:element name="accessDate" type="xs:string"/>

    <xs:element name="data">
        <xs:complexType>
            <xs:all>
                <xs:element ref="c:list" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="c:classBean" minOccurs="0" maxOccurs="1"/>
            </xs:all>
        </xs:complexType>
    </xs:element>
    <xs:element name="classBean">
        <xs:complexType>
            <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="c:fullId" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="c:id" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="c:label" maxOccurs="1" minOccurs="0"/>
                <xs:element ref="c:relations" maxOccurs="1" minOccurs="0"/>
                <xs:element name="type" type="xs:string" maxOccurs="1" minOccurs="0"/>
            </xs:choice>
        </xs:complexType>
    </xs:element>

    <xs:element name="fullId" type="xs:string"/>
    <xs:element name="id" type="xs:string"/>
    <xs:element name="label" type="xs:string"/>

    <xs:element name="relations">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="c:entry"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="entry">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="string" type="xs:string"/>
                    <xs:element ref="c:list"/>
                </xs:choice>
                <xs:element minOccurs="0" ref="c:int"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="list">
        <xs:complexType>
            <xs:sequence>
                <xs:choice minOccurs="0" maxOccurs="unbounded">
                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="c:classBean"/>
                    <xs:element minOccurs="0" maxOccurs="unbounded" name="string" type="xs:string"/>
                </xs:choice>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="int" type="xs:integer"/>

</xs:schema>

検証には、次のコード スニペットを使用します。

SchemaFactory schemaFactory =  SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();
validator.validate(xmlFile);

次の例外がスローされます。これは、指定されたスキーマで XML ファイルが有効でないことを示しています。

org.xml.sax.SAXParseException; systemId: file:/C:/xml.xml; lineNumber: 2; columnNumber: 10; cvc-elt.1: Cannot find the declaration of element 'success'.

2行目に「成功」​​要素があるため、メッセージがわかりません。誰か助けてくれませんか?

4

1 に答える 1

0

あなたのXMLはスキーマに従って間違っています。見てください:

XML:

<classBean>
  <id>http://purl.bioontology.org/ontology/provisional/9cc8b147-e193-4d23-a3a1-9da34eeeb5a9</id>
  <fullId>http://purl.bioontology.org/ontology/provisional/9cc8b147-e193-4d23-a3a1-9da34eeeb5a9</fullId>
  <label>OzbbBugGbIINcdpSY</label>
  <synonyms>
    <string>ux0fBN http://www.ggiodpc.com/www.6shpFpANPwYnffbs9P5rsRN67oJWDZuQ.com.php</string>
  </synonyms>
  <definitions>
    <string>ux0fBN http://www.ggiodpc.com/www.6shpFpANPwYnffbs9P5rsRN67oJWDZuQ.com.php</string>
  </definitions>

XSD

  <xs:element name="classBean">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="c:fullId" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="c:id" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="c:label" maxOccurs="1" minOccurs="0"/>
        <xs:element ref="c:relations" maxOccurs="1" minOccurs="0"/>
        <xs:element name="type" type="xs:string" maxOccurs="1" minOccurs="0"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>

注: 「類義語」および「定義」は、「classBean」要素の有効な子ではありません。

'date' と 'null' を子として持つ 'entry' 要素についても同じことが言えますが、スキーマによっては有効ではありません。さらにいくつかのエラーがあります。

SAX パーサーが正しい行番号のエラーを反映していない可能性があります。

于 2013-04-25T04:51:41.997 に答える