Announcement

Collapse
No announcement yet.

Probleme mit Namespaces

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit Namespaces

    Hallo beisammen,

    ich schlage mich derzeit mit Namespaces rum und komme einfach nicht weiter. Leider habe ich auch keinen guten Anhaltspunkt... ich konnte nur das Problem einkreisen.

    Ich habe eine XSLT geschrieben, die mir aus einer Quell-XML eine neu XML erzeugt. Diese hat die Struktur eines gewöhnlichen Feeds. Dieser Feed soll nun validiert werden. Die Struktur an sich ist nicht das Ding nur in Kombination mit Namespaces wird es haarig.
    Struktur der Quell-XML (des Feeds)
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <feed>
       <!--<opensearch:totalResults xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">44</opensearch:totalResults>-->
       <totalResults>55</totalResults>
       <entry>
          <title>Title Eins</title>
          <summary>Zusammenfassung Eins</summary>
          <link href="http://ohwieichmichfr.eu"/>
          <tags>TagEins</tags>
       </entry>
       <entry>
          <title>Titel Zwei</title>
          <summary>Was auch immer</summary>
          <link href="http://ohwieichmichfr.eu"/>
          <tags>Quatsch</tags>
       </entry>
       </feed
    Folgendes Schema habe ich dazu erzeugt und erfolgreich validiert.
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
    <xs:element name="feed">
        <xs:complexType mixed="true">
            <xs:sequence minOccurs="1" maxOccurs="unbounded">
                <xs:element name="totalResults" minOccurs="1" maxOccurs="1" type="xs:positiveInteger"/>            
                <xs:sequence minOccurs="1" maxOccurs="unbounded">
                    <xs:element name="entry">
                        <xs:complexType mixed="true">
                            <xs:all>
                                <xs:element name="title" type="xs:string" />
                                <xs:element name="summary" type="xs:string" />
                                <xs:element name="tags" type="xs:string" />
                                <xs:element name="link">
                                <xs:annotation>
                                    <xs:documentation>
                                      Important is that the Link contains a "href"-attribute
                                    </xs:documentation>
                                </xs:annotation>
                                    <xs:complexType>
                                    <xs:simpleContent>
                                        <xs:extension base="xs:string">
                                        <xs:attribute name="href" type="xs:string" />
                                        </xs:extension>
                                    </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                            </xs:all>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    </xs:schema>
    Was ich jetzt noch brauche ist der Namespace von 'openSearch'. In der Quelle habe ich das schon auskommentiert eingefügt. Wie muss ich mein Schema umstellen, dass die Quelle incl. Namespace erfolgreich validiert werden kann?

    Wie bei XSLT habe ich es mit "<xs:element name="os:totalResults"...." versucht, allerdings gibt das nur Fehler...

    Vielen Dank im Voraus
    Grüße

  • #2
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/">
      <xs:import namespace="http://a9.com/-/spec/opensearch/1.1/" schemaLocation="opensearch.xsd"/>
      <xs:element name="feed">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="opensearch:totalResults"/>
            <xs:element ref="totalResults"/>
            <xs:element maxOccurs="unbounded" ref="entry"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="totalResults" type="xs:integer"/>
      <xs:element name="entry">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="title"/>
            <xs:element ref="summary"/>
            <xs:element ref="link"/>
            <xs:element ref="tags"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="title" type="xs:string"/>
      <xs:element name="summary" type="xs:string"/>
      <xs:element name="link">
        <xs:complexType>
          <xs:attribute name="href" use="required" type="xs:anyURI"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="tags" type="xs:NCName"/>
    </xs:schema>

    Comment


    • #3
      Hey,
      danke für die Antwort!
      Kannst du mir evtl. noch in kurzen Worten erklären wie das mit dem "import" genau funktioniert? Das hab ich noch nicht so richtig verstanden...
      Grüße

      Comment

      Working...
      X