Announcement

Collapse
No announcement yet.

kein prefix bei xsi:type="...

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

  • kein prefix bei xsi:type="...

    hallo

    ich habe folgendes xml;

    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
    <ns2:Container xmlns="http://example.ch/ws" xmlns:ns2="http://example.ch/container">
    <referencedObjects xsi:type="Person" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ID>21</ID>
    <name>sample</name>
    </referencedObjects>
    </ns2:Container>
    </S:Body>
    </S:Envelope>
    hier ist es so das bei xsi:type="Person" kein namespace prefix vorhanden ist weil http://example.ch/ws ja der default namespace ist - so ist das xml korrekt da sich der type ja im richtigen namespace befindet.

    nun wird folgendes ausgeführt:

    declare namespace ws='http://example.ch/ws';
    //ws:referencedObjects[1]
    dies führt dann zu folgendem resultat:

    <ws:referencedObjects xsi:type="Person" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ws="http://example.ch/ws">
    <ws:ID>21</ws:ID>
    <ws:name>sample</ws:name>
    </ws:referencedObjects>
    wie man sieht wurde im resultat überall korrekt der namespace prefix ws vorangestellt - ausser bei xsi:type="Person". korrekt müsste es xsi:type="ws:Person" heissen!

    kann mir hier jemand weiterhelfen wie ich es mit XPath hinbekomme damit er auch bei der Person einen prefix voranstellt?

  • #2
    Mit welcher XQuery-Implementierung arbeitest du? Wenn ich Saxon 9.3.0.5 HE mit deinen Beispieldateien benutze, ist die Ausgabe wie folgt:
    Code:
    <?xml version="1.0" encoding="UTF-8"?><referencedObjects xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://example.ch/ws" xmlns:ns2="http://example.ch/container" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xsi:type="Person">
    <ID>21</ID>
    <name>sample</name>
    </referencedObjects>

    Comment


    • #3
      Wir brauchen das in Zusammenhang mit SoapUI welches die Version 9.1.0.8 von Saxon benutzt. Ich muss es auch mal ausserhalb von SoapUI testen - vielleicht liegt das Problem auch bei SoapUI.

      Trotzdem noch die grundsätzliche Frage da ich nicht so der XPath/XQuery Spezialist bin: wenn der Namespace wechselt, d.h. die Prefixe anders definiert werden, dann sollte auch der xsi:type=".." mit einem Prefix versehen werden? Ist die Annahme korrekt?

      Comment


      • #4
        Was die grundsätzliche Frage angeht, so bin ich mir nicht sicher, was passieren soll. Ich denke, so man neue Knoten erzeugt und dabei andere Präfixe verwendet, muss man selbst sicherstellen, dass eventuelle Attributwerte, die qualifizierte Namen darstellen, angepasst werden.

        Dein einfaches Beispiel aber selektiert nur Knoten in einem existierendem Dokument, da verstehe ich nicht, warum überhaupt ein Präfix eingeführt wird. Auch mit Saxon 9.1.0.8 passiert das bei mir nicht, das Resultat ist
        Code:
        <?xml version="1.0" encoding="UTF-8"?>
        <referencedObjects xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://example.ch/ws"
                           xmlns:ns2="http://example.ch/container"
                           xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
                           xsi:type="Person">
           <ID>21</ID>
           <name>sample</name>
        </referencedObjects>

        Comment


        • #5
          Ok, dann wird's wohl doch ein SoapUI Problem sein. Werde in dem Fall doch warten müssen bis ich von denen eine Antwort bekomme.

          Vielen Dank trotzdem für deine Hilfe! Hat mir schon sehr weitergeholfen!

          Comment

          Working...
          X