tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1219
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    sabine84 sabine84 ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    Hallo zusammen!

    Ich habe folgendes Problem:

    Ich möchte gern mit Hilfe von XPath Ausdrücken die Inhalte eines XML-Dokumentes in Schematron vergleichen. Nur leider bekomme ich das nicht so hin wie gewollt.

    hier ein Ausschnitt aus dem XML:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    <kbl:KBL_container>
       <External_reference>
           <Document_type='KAB'>
           <Change_level>300611</Change_level>
           <finishing>250811</finishing>
        </External_refernce>
       <Harness>
          <Change>
               <Change_date>110509</Change_date>
          </Change>
        </Harness>
    </kbl:KBL_container>
    Ich möchte nun die Werte aus <Change_level> und <Change_date> vergleichen. Sie sollen den gleichen Inhalt haben, d.h. sonst Fehlermeldung.

    Wenn diese nicht überein stimmen kann ich mit Hilfe von Schematron eine Fehlermeldung ausgeben.
    Ich habe es bis jetz leider nur geschafft die Elemente <Change_level> und <finishing> miteinander zu vergleichen.

    meine bisherige Regel mit Schematron, die leider nicht funktioniert:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    
    <pattern>
       <rule context="//External_refernce[Document_type='KAB'] | //Harness/Change">
            <assert test="Change_level=Change_date">
                Achtung! Änderungsstand stimmt nicht überein. 
            </assert>
        </rule>
    </pattern>

    Kann mir jemand helfen? ich habe schon vieles ausprobiert aber leider geht es nicht richtig.

    Viele Grüße
    Geändert von ComFreek (02.01.12 um 15:27 Uhr) Grund: [xml]-Tags hinzugefügt!
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Hi.

    Statt External_reference hast du External_refernce geschrieben.

    Ansonsten passt dein Kontext ja nicht, da Change_level und Change_date nicht unterhalb des gleichen Elements vorkommen.

    Ich würde es mal so probieren:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    
    <pattern>
       <rule context="//kbl:KBL_container">
            <assert test="External_reference/Change_level=Harness/Change/Change_date">
                Achtung! Änderungsstand stimmt nicht überein. 
            </assert>
        </rule>
    </pattern>

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    sabine84 sabine84 ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    Hi!

    Danke für die Antwort, allerdings funktioniert es leider noch nicht.

    Das Dokument ist nach der Validierung immer noch gültig, obwohl es unterschiedliche Daten sind. Ich habe es auch mit <report> versucht, aber auch kein erfolg.

    Es funktioniert aber wenn ich den Kontext //kbl:KBL_container/External_reference setze und darunter <Change_level> mit <finishing> vergleiche.

    Es sollte doch auch funktionieren, wenn man den Kontext eine Ebene höher setzt?

    Irgendwie steh ich da aufn Schlauch

    Viele Grüße
     

  4. #4
    sabine84 sabine84 ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    Hi.

    Das Problem ist gelöst.

    Ich muss im Kontext External_reference auswählen, und dann assert auf das Elternelement weisen.

    <rule context="//External_reference[Document_type='KAB']">
    <assert test="Change_level=..//Change_date">

    Viele Grüße
     

Ähnliche Themen

  1. Werte vergleichen
    Von Kantoval im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 01.11.09, 10:34
  2. Antworten: 6
    Letzter Beitrag: 10.06.09, 14:27
  3. Werte vergleichen
    Von Einsteinprog im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 28.03.07, 22:32
  4. 2 Werte vergleichen
    Von TobiasTokio im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 04.04.06, 02:18
  5. werte vergleichen
    Von Worka im Forum PHP
    Antworten: 2
    Letzter Beitrag: 12.06.04, 00:32

Stichworte