tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
1408
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 leider folgendes Problem:

    Ich möchte gern mit Hilfe von Schematron eine Fehlermeldung ausgeben, wenn im Dateiname (Document_number) an der 21-23. Stelle nicht "ELV" oder "ELX" oder "ELZ" geschrieben ist. D.h. man müsste vielleicht nur die 23.Stelle nach [VXZ] abfragen, das habe ich aber leider nicht hinbekommen

    hier die XML:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    <kbl:KBL_container>
    <External_reference>
    <Document_type>KAB</Document_type>
    <Document_number>TAB_886_016_JK_KPR_ELV_____300611</Document_number>
    </External_reference>
    </kbl:KBL_container>
     
    hier mein Versuch in Schematron:
    <pattern>
    <rule context="//External_reference[Document_type='KAB']">
    <assert test="contains(Document_number, '[E][L][VX]'">
    Achtung! </assert>
    </rule>
    </pattern>
    Das funktioniert aber leider nicht so wie gedacht

    Kann mir jemand helfen?

    Viele Grüße
    Geändert von sabine84 (03.01.12 um 16:57 Uhr) Grund: Codetags
     

  2. #2
    Martin Honnen Martin Honnen ist offline Mitglied Bronze
    Registriert seit
    Dec 2011
    Beiträge
    30
    Welche XPath-Version verwendest du mit Schematron? XPath 1.0 hat keine Unterstützung für reguläre Ausdrücke, die du im Titel deines Posts erwähnst. Für deine Anforderung reicht aber eventuell substring http://www.w3.org/TR/xpath/#function-substring
    Code :
    1
    
    <assert test="substring(Document_number, 21, 3) = 'ELV' or substring(Document_number, 21, 3) = 'ELX' or substring(Document_number, 21, 3) = 'ELZ'"/>
     

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

    Ich verwende XPath 2.0
    Würde es gern über reguläre Ausdrücke abfragen, da ich wenn dies einmal funktioniert noch mehrere Stelle im Name abfragen möchste.

    Viele Grüße
     

  4. #4
    Martin Honnen Martin Honnen ist offline Mitglied Bronze
    Registriert seit
    Dec 2011
    Beiträge
    30
    Mit XPath 2.0 gibt es eine matches-Funktion http://www.w3.org/TR/xpath-functions/#func-matches, also etwa (ungetestet)
    Code :
    1
    
    <assert test="matches(Document_number, '^.{20}EL(V|X|Z)')"/>
    testet, ob nach zwanzig beliebigen Zeichen die zwei Buchstaben "EL" gefolgt von "V" oder "X" oder "Z" vorkommen.
     

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

    Danke für die schnelle Hilfe!

    Scheinbar unterstützt zwar der Oxygen Editor das XPath2.0 aber Schematron nicht.
    Ich habe es so versucht wie oben beschrieben, aber Fehlermeldung:

    # W [ISO Schematron] Error in expression machtes (Document_number,'^.{20}EL(V|X|Z)'): Unknown system function: matches

    Kann ich noch was anderes versuchen?
     

  6. #6
    Martin Honnen Martin Honnen ist offline Mitglied Bronze
    Registriert seit
    Dec 2011
    Beiträge
    30
    So die matches-Funktion nicht erkannt wird, wird deine Schematron-Implementierung wohl nur XPath 1.0 unterstützen. Unter http://www.xfront.com/schematron/sch...nd-xpath2.html wird erklärt, man könne das für Oxygen konfigurieren
    Code :
    1
    2
    3
    4
    5
    
    To switch to XPath 2.0 do this:
     
        Under Oxygen's Options menu, select Preferences
            Under XML, select XML Parser
                Under "Schematron XPath Version", click on 2.0
    Ansonsten frag eventuell in einem Oxygen-Forum nach, so sich hier niemand meldet, der sich damit auskennt.
     

  7. #7
    sabine84 sabine84 ist offline Rookie
    Registriert seit
    Jan 2012
    Beiträge
    7
    Ich habe auf XPath 2.0 umgestellt. Die Funktion matches geht leider trotzdem nicht.
    Geändert von sabine84 (04.01.12 um 09:43 Uhr)
     

  8. #8
    Martin Honnen Martin Honnen ist offline Mitglied Bronze
    Registriert seit
    Dec 2011
    Beiträge
    30
    Ich habe Schematron bisher nicht mit XPath bzw. XSLT 2.0 benutzt, aber ich habe jetzt mal probeweise http://www.schematron.com/tmp/iso-schematron-xslt2.zip heruntergeladen und dann mit Hilfe von Saxon 9.3 und http://www.dpawson.co.uk/schematron/ folgendes Beispiel probiert: das Schematron-Schema ist
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://purl.oclc.org/dsdl/schematron"
      queryBinding="xslt2"
      schemaVersion="ISO19757-3">
      
      <title>Testing matches function</title>
      
      <pattern>
        <rule context="foo">
          <assert test="matches(bar, '^[A-Z]{5}[0-9]{3}$')">Pattern matches(bar, '^[A-Z]{5}[0-9]{3}$') needs to be matched.</assert>
        </rule>
      </pattern>
      
    </schema>
    ein Beispiel-Dokument, das geprüft werden soll, ist
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    <root>
      <foo>
        <bar>ABCDE123</bar>
      </foo>
      <foo>
        <bar>12345678</bar>
      </foo>
    </root>
    das funktioniert bei mir dann reibungslos, wenn man in zwei Schritten erst das Schema verarbeitet und dann das im ersten Schritt erhaltene XSLT-Stylesheet auf das XML-Dokument anwendet, Ausgabe ist dann
    Code :
    1
    
    Pattern matches(bar, '^[A-Z]{5}[0-9]{3}$') needs to be matched.
    Mit Oxygen kann ich nicht helfen, da solltest du unter http://www.oxygenxml.com/forum/ nach einem geeigneten Forum suchen, so hier keine anderen Oxygen-Benutzer lesen, die helfen können.
     

Ähnliche Themen

  1. Reguläre Ausdrücke in VBA
    Von Trash im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 06.01.09, 12:43
  2. Reguläre Ausdrücke
    Von Steusi im Forum Coders Talk
    Antworten: 4
    Letzter Beitrag: 11.12.08, 13:01
  3. Reguläre Ausdrücke
    Von Binio im Forum PHP
    Antworten: 14
    Letzter Beitrag: 17.09.08, 16:44
  4. Reguläre Ausdrücke
    Von philBerlin im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 4
    Letzter Beitrag: 28.02.08, 13:11
  5. Reguläre Ausdrücke
    Von son gohan im Forum PHP
    Antworten: 6
    Letzter Beitrag: 16.02.06, 23:46

Stichworte