Εξαγωγή μηνυμάτων σφάλματος εκτός Java StackTrace για επικύρωση XML

Temp mail SuperHeros
Εξαγωγή μηνυμάτων σφάλματος εκτός Java StackTrace για επικύρωση XML
Εξαγωγή μηνυμάτων σφάλματος εκτός Java StackTrace για επικύρωση XML

Επίλυση μηνύματος σφάλματος επικύρωσης XML ανάκτηση εκτός Java StackTrace

Σε εφαρμογές Java, η ανάλυση αρχείων XML συχνά περιλαμβάνει επικύρωση έναντι σχημάτων όπως το XSD, με πιθανά σφάλματα κατά τη διάρκεια αυτής της διαδικασίας. Συνήθως, αυτά τα σφάλματα καταγράφονται σε ίχνη στοίβας για εντοπισμό σφαλμάτων, αλλά μερικές φορές κρίσιμες λεπτομέρειες σφάλματος εμφανίζονται έξω από το ίδιο το ίχνος στοίβας.

Οι προγραμματιστές Java ενδέχεται να αντιμετωπίσουν σενάρια όπου δημιουργούνται περιγραφικά μηνύματα σφάλματος από προσαρμοσμένες επικυρώσεις XSLT ή XSD, ωστόσο αυτά τα μηνύματα δεν εμφανίζονται στην παρακολούθηση στοίβας. Αντίθετα, καταγράφονται ή εξάγονται ξεχωριστά, γεγονός που καθιστά δύσκολη τη λήψη τους μέσω προγραμματισμού.

Αυτό το άρθρο αντιμετωπίζει το πρόβλημα πρόσβασης σε μηνύματα σφάλματος που εμφανίζονται εκτός της τυπικής στοίβας Java. Θα συζητήσουμε πώς να χρησιμοποιήσετε τα εργαλεία επεξεργασίας XML της Java, όπως μετασχηματιστές XSLT και προσαρμοσμένους χειριστές σφαλμάτων, για να καταγράψετε αποτελεσματικά αυτά τα πρόσθετα μηνύματα σφάλματος.

Θα διερευνήσουμε τεχνικές για τη λήψη αυτών των μηνυμάτων, εστιάζοντας σε ένα σενάριο όπου ένα σφάλμα επικύρωσης σε ένα αρχείο XML ενεργοποιεί ένα κείμενο σφάλματος έξω από το ίχνος στοίβας. Στο τέλος, θα έχετε ενεργές μεθόδους για να ανακτήσετε και να καταγράψετε αυτά τα άπιαστα μηνύματα σφάλματος για ισχυρή επικύρωση XML σε εφαρμογές Java.

Εντολή Περιγραφή και Παράδειγμα Χρήσης
setMessageListener Ορίζει ένα προσαρμοσμένο πρόγραμμα ακρόασης μηνυμάτων στον μετασχηματιστή XSLT, καταγράφοντας συγκεκριμένα μηνύματα σφάλματος που δημιουργούνται κατά τη διαδικασία μετασχηματισμού. Χρησιμοποιείται εδώ για την παρακολούθηση μηνυμάτων απευθείας από την επικύρωση XSLT.
XsltCompiler.compile Μεταγλωττίζει ένα φύλλο στυλ XSLT από μια δεδομένη ροή εισόδου ή πηγή. Αυτό επιτρέπει την εφαρμογή των κανόνων επικύρωσης XSLT κατά την επεξεργασία XML. Απαραίτητο για την επικύρωση προσαρμοσμένου σχήματος με χρήση XSLT.
Pattern.compile Δημιουργεί μια μεταγλωττισμένη έκδοση ενός μοτίβου τυπικής έκφρασης, επιτρέποντας την αποτελεσματική αντιστοίχιση για ανάλυση αρχείων καταγραφής. Χρησιμοποιείται για την αναζήτηση αρχείων καταγραφής για μηνύματα σφάλματος εκτός του ίχνους στοίβας.
XsltTransformer.setSource Ορίζει την πηγή XML για τον μετασχηματιστή XSLT, επιτρέποντας στον μετασχηματιστή να εφαρμόζει φύλλα στυλ σε συγκεκριμένα δεδομένα XML. Είναι κρίσιμο για την εφαρμογή κανόνων επικύρωσης XSLT για την εισαγωγή αρχείων XML.
StreamSource Αναδιπλώνει μια πηγή εισόδου για επεξεργασία XML ή XSLT, επιτρέποντας τον ευέλικτο χειρισμό εισόδου από αρχεία, συστοιχίες byte ή ροές. Χρησιμοποιείται για την τροφοδοσία δεδομένων XML και XSLT στο Saxon API για επεξεργασία.
Matcher.find Πραγματοποιεί αναζήτηση για εμφανίσεις του καθορισμένου μοτίβου μέσα στις γραμμές καταγραφής. Σημαντικό για τον εντοπισμό μηνυμάτων σφάλματος με αντιστοίχιση μοτίβων εκτός του τυπικού ίχνους στοίβας Java.
Iterator<XdmNode> Παρέχει έναν τρόπο επανάληψης μέσω στοιχείων XdmNode, που χρησιμοποιείται εδώ για τη διέλευση κόμβων στο έγγραφο αποτελεσμάτων XML μετά τον μετασχηματισμό, επιτρέποντας την επιλεκτική επεξεργασία συγκεκριμένων κόμβων σφάλματος.
XdmNode.getNodeName().getLocalName() Ανακτά το τοπικό όνομα ενός κόμβου, το οποίο βοηθά στο φιλτράρισμα συγκεκριμένων κόμβων (π.χ. "αποτυχία-επιβεβαίωση") στην μετασχηματισμένη έξοδο XML, επιτρέποντας τη στοχευμένη διαχείριση σφαλμάτων.
assertTrue Ένας ισχυρισμός JUnit που ελέγχει εάν μια συνθήκη είναι αληθής. Χρησιμοποιείται εδώ σε δοκιμές μονάδας για την επικύρωση ότι η επεξεργασία XML παράγει αναμενόμενα σφάλματα, διασφαλίζοντας ότι η λογική επικύρωσης λειτουργεί όπως προβλέπεται.

Ολοκληρωμένες λύσεις για την καταγραφή σφαλμάτων επικύρωσης XML εκτός StackTrace

Τα σενάρια Java που παρέχονται σε αυτήν τη λύση στοχεύουν στην καταγραφή κρίσιμων σφαλμάτων επικύρωσης XML που καταγράφονται εκτός του τυπικού StackTrace παραγωγή. Σε ορισμένα σενάρια επεξεργασίας XML, προσαρμοσμένα πλαίσια επικύρωσης όπως τα σχήματα XSLT ή XSD ενδέχεται να δημιουργήσουν συγκεκριμένα μηνύματα σφάλματος χρησιμοποιώντας προσαρμοσμένους χειριστές. Αυτά τα σενάρια βοηθούν στην ανάκτηση αυτών των λεπτομερειών για καλύτερο εντοπισμό σφαλμάτων. Το πρώτο σενάριο χρησιμοποιεί Saxon’s XsltTransformer API για φόρτωση και επικύρωση XML με ένα φύλλο στυλ XSLT, καταγράφοντας τυχόν σφάλματα που εκπέμπονται μέσω των λειτουργιών μηνυμάτων του XSLT. Ορίζοντας ένα πρόγραμμα ακρόασης μηνυμάτων στον μετασχηματιστή, μπορούμε να συλλάβουμε και να προσθέσουμε αυτά τα μηνύματα σε μια λίστα σφαλμάτων, καθιστώντας τα προσβάσιμα στην εφαρμογή Java.

Το δεύτερο σενάριο αναλύει ένα εξωτερικό αρχείο καταγραφής για να καταγράψει συγκεκριμένα μηνύματα επικύρωσης XML που δεν εμφανίζονται στο Java StackTrace. Αναζητώντας το αρχείο καταγραφής με κανονικές εκφράσεις, προσδιορίζει τυχόν γραμμές που περιέχουν συγκεκριμένα μοτίβα σφαλμάτων που σχετίζονται με κανόνες επικύρωσης XML. Για παράδειγμα, αυτή η λύση είναι χρήσιμη σε συστήματα όπου οι συνθήκες σφάλματος ορίζονται από μοναδικές συμβολοσειρές, όπως αυτές που υποδεικνύουν συνθήκες σχήματος που δεν πληρούνται, επιτρέποντάς μας να τραβήξουμε αυτές τις γραμμές και να κατανοήσουμε καλύτερα τις αποτυχίες επικύρωσης εκτός των περιορισμένων λεπτομερειών του StackTrace.

Το τρίτο παράδειγμα ενισχύει αυτήν την προσέγγιση εφαρμόζοντας τη δοκιμή μονάδας χρησιμοποιώντας JUnit. Αυτή η δέσμη ενεργειών ενσωματώνει τη μέθοδο επικύρωσης XSLT από την πρώτη δέσμη ενεργειών σε μια μονάδα με δυνατότητα δοκιμής, διασφαλίζοντας ότι οποιαδήποτε είσοδος XML αποτυγχάνει στην επικύρωση θα παράγει μηνύματα σφάλματος όπως αναμένεται. Με την ενσωμάτωση αυτού σε μια δοκιμή JUnit, οι προγραμματιστές μπορούν να επικυρώσουν την ακρίβεια της λογικής διαχείρισης σφαλμάτων κατά τη διαδικασία κατασκευής, εντοπίζοντας τυχόν προβλήματα κατά τη διάρκεια συνεχούς ενοποίησης ή δοκιμαστικών φάσεων. Αυτό χρησιμεύει επίσης ως ένας πρακτικός τρόπος για να επιβεβαιώσετε ότι τα αναμενόμενα σφάλματα καταγράφονται και αποθηκεύονται με συνέπεια, διασφαλίζοντας μια σταθερή γραμμή επεξεργασίας XML.

Η χρήση ενός συνδυασμού ακροατών μηνυμάτων, του μετασχηματισμού XSLT και της δοκιμής μονάδας διασφαλίζει μια αρθρωτή, επαναχρησιμοποιήσιμη δομή σε αυτά τα σενάρια. Για παράδειγμα, το setMessageListener μέθοδος στη βιβλιοθήκη Saxon μπορεί να υποκλέψει και να αποθηκεύσει μηνύματα που δημιουργούνται από xsl: μήνυμα κλήσεις στο XSLT, το οποίο διαφορετικά θα χάνονταν εκτός StackTrace. Η προσέγγιση ανάλυσης καταγραφής το συμπληρώνει λειτουργώντας ως εναλλακτική λύση για περιπτώσεις όπου τα σφάλματα αποθηκεύονται σε ξεχωριστά αρχεία καταγραφής. Αυτές οι συνδυασμένες στρατηγικές προσφέρουν ισχυρές μεθόδους για την ανάκτηση λεπτομερειών σφαλμάτων που εμφανίζονται εκτός των παραδοσιακών ιχνών στοίβας, ενισχύοντας τις δυνατότητες εντοπισμού σφαλμάτων και επικύρωσης σε εφαρμογές επεξεργασίας XML.

Καταγραφή κειμένου σφάλματος εκτός Java StackTrace για επικύρωση XML στην επεξεργασία Backend

Λύση υποστήριξης Java χρησιμοποιώντας τη βιβλιοθήκη Saxon και προσαρμοσμένους χειριστές σφαλμάτων

import net.sf.saxon.s9api.*;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class XmlValidator {
    private Processor processor;
    public XmlValidator() {
        this.processor = new Processor(false);
    }
    public List<String> validateXml(String xml, InputStream xsltStream)
            throws SaxonApiException, IOException {
        XsltCompiler compiler = processor.newXsltCompiler();
        XsltExecutable xslt = compiler.compile(new StreamSource(xsltStream));
        XsltTransformer transformer = xslt.load();
        transformer.setSource(new StreamSource(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8))));
        List<String> errors = new ArrayList<>();
        transformer.setMessageListener((MessageListener) (msg, loc) -> errors.add(msg.getStringValue()));
        transformer.transform();
        return errors;
    }
}
// Unit Test
public static void main(String[] args) {
    try (InputStream xsltStream = new FileInputStream("path/to/your.xslt")) {
        XmlValidator validator = new XmlValidator();
        List<String> errors = validator.validateXml(xml, xsltStream);
        errors.forEach(System.out::println);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Εξαγωγή συγκεκριμένων σφαλμάτων XML από αρχεία καταγραφής χωρίς StackTrace για εφαρμογές Java

Επικύρωση XML βασισμένη σε Java με προσέγγιση ανάλυσης αρχείων καταγραφής

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class LogParser {
    private static final String LOG_PATH = "path/to/your.log";
    private static final String ERROR_REGEX = "The condition of presence .*? equal to \\\"2\\\"";
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader(LOG_PATH))) {
            String line;
            Pattern pattern = Pattern.compile(ERROR_REGEX);
            while ((line = reader.readLine()) != null) {
                Matcher matcher = pattern.matcher(line);
                if (matcher.find()) {
                    System.out.println("Error Text Found: " + matcher.group());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
// Test output to verify error capture

Προηγμένος χειρισμός σφαλμάτων XML σε Java: Χρήση προσαρμοσμένου XSLT και δοκιμής μονάδας για επικύρωση

Λύση Java με επικύρωση XSLT, βιβλιοθήκη Saxon και δοκιμή JUnit

import net.sf.saxon.s9api.*;
import org.junit.jupiter.api.Test;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class XmlValidatorTest {
    private Processor processor = new Processor(false);
    public List<String> validateXml(String xml, InputStream xsltStream)
            throws SaxonApiException, IOException {
        XsltCompiler compiler = processor.newXsltCompiler();
        XsltExecutable xslt = compiler.compile(new StreamSource(xsltStream));
        XsltTransformer transformer = xslt.load();
        List<String> errors = new ArrayList<>();
        transformer.setMessageListener((msg, loc) -> errors.add(msg.getStringValue()));
        transformer.setSource(new StreamSource(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8))));
        transformer.transform();
        return errors;
    }
    @Test
    public void testValidation() throws Exception {
        InputStream xsltStream = new FileInputStream("path/to/your.xslt");
        String xml = "<testXml></testXml>"; // sample XML for testing
        List<String> errors = validateXml(xml, xsltStream);
        assertTrue(errors.size() > 0, "Validation should produce errors");
        xsltStream.close();
    }
}

Ανάκτηση σφάλματος από αρχεία καταγραφής επικύρωσης XML σε εφαρμογές Java

Κατά την ανάπτυξη εφαρμογών Java με απαιτήσεις επικύρωσης XML, τα σφάλματα καταγραφής είναι απαραίτητα, ιδιαίτερα όταν τα σφάλματα επικύρωσης δεν υπερβαίνουν τα τυπικά StackTrace. Ένας από τους καλύτερους τρόπους για την ανάκτηση αυτών των σφαλμάτων εκτός ίχνους είναι η χρήση αποκλειστικών επεξεργαστών XML όπως το Saxon. Με τη δημιουργία ενός προσαρμοσμένο πρόγραμμα χειρισμού σφαλμάτων, οι προγραμματιστές μπορούν να υποκλέψουν μηνύματα που εξάγονται από πλαίσια επεξεργασίας XML, όπως το XSLT ή το XSD, τα οποία συχνά χρησιμοποιούν συγκεκριμένες λειτουργίες ανταλλαγής μηνυμάτων για την επικοινωνία των αποτελεσμάτων επικύρωσης. Στη συνέχεια, ο προσαρμοσμένος χειριστής σφαλμάτων καταγράφει αυτά τα μηνύματα, καθιστώντας δυνατό τον εντοπισμό σφαλμάτων χωρίς να βασίζεστε αποκλειστικά σε εξόδους ανίχνευσης στοίβας.

Μια άλλη προσέγγιση περιλαμβάνει την ανάλυση αρχείων καταγραφής για την καταγραφή σφαλμάτων επικύρωσης που δεν εμφανίζονται εξαιρέσεις χρόνου εκτέλεσης. Συχνά, οι προσαρμοσμένοι αναλυτές αρχείων καταγραφής αναλύουν καταχωρήσεις για συγκεκριμένες λέξεις-κλειδιά ή φράσεις που υποδηλώνουν σφάλματα επικύρωσης XML. Αυτή η μέθοδος είναι ιδιαίτερα χρήσιμη όταν τα σφάλματα είναι περιγραφικά αλλά δεν προκαλούν εξαίρεση. Με την υποστήριξη regex της Java μέσω τάξεων όπως Pattern και Matcher, τα αρχεία καταγραφής μπορούν να αναλυθούν αποτελεσματικά για την απομόνωση γραμμών σφαλμάτων με βάση προκαθορισμένα μοτίβα, τα οποία στη συνέχεια αποθηκεύονται για περαιτέρω ανάλυση. Αυτή η λύση είναι ιδανική για εφαρμογές όπου η επικύρωση XML περιλαμβάνει περίπλοκες συνθήκες, που συχνά υπαγορεύονται από ρυθμιστικά πρότυπα ή ανάγκες ακεραιότητας δεδομένων.

Τέλος, τα αυτοματοποιημένα πλαίσια δοκιμών όπως το JUnit σάς επιτρέπουν να επιβεβαιώσετε ότι ο προσαρμοσμένος χειρισμός σφαλμάτων καταγράφει τα επιδιωκόμενα μηνύματα, βελτιώνοντας την ευρωστία στην επεξεργασία XML. Στις δοκιμές JUnit, μπορείτε να προσομοιώσετε μη έγκυρες εισόδους δεδομένων XML και να επαληθεύσετε εάν το προσαρμοσμένοι ακροατές μηνυμάτων και οι χειριστές σφαλμάτων στην εφαρμογή ανταποκρίνονται σωστά. Με την προσθήκη ισχυρισμών σε δοκιμές μονάδας, οι προγραμματιστές διασφαλίζουν ότι οποιαδήποτε μη συμβατή XML δημιουργεί ανατροφοδότηση με δυνατότητα ενέργειας, ειδικά όταν το κείμενο σφάλματος βρίσκεται εκτός του συμβατικού StackTrace.

Συνήθεις ερωτήσεις σχετικά με την ανάκτηση σφαλμάτων επικύρωσης Java XML

  1. Ποιος είναι ο σκοπός της χρήσης α MessageListener σε επικύρωση XML;
  2. Ο MessageListener σας επιτρέπει να καταγράφετε μηνύματα που δημιουργούνται από σφάλματα επικύρωσης XSLT ή XSD που διαφορετικά θα χάνονταν σε μια τυπική ίχνη στοίβας.
  3. Πώς μπορώ να ανακτήσω μηνύματα σφάλματος εκτός Java StackTrace?
  4. Εφαρμόστε έναν προσαρμοσμένο χειριστή σφαλμάτων ή αναλύστε αρχεία καταγραφής για συγκεκριμένες λέξεις-κλειδιά για να καταγράψετε σφάλματα επικύρωσης εκτός του StackTrace.
  5. Γιατί η ανάλυση αρχείων καταγραφής είναι χρήσιμη στον χειρισμό σφαλμάτων XML;
  6. Ημερολόγιο ανάλυσης με Pattern και Matcher στη Java επιτρέπει την ανάκτηση σφαλμάτων από εξωτερικά αρχεία καταγραφής, ιδιαίτερα όταν τα σφάλματα καταγράφονται εκτός StackTrace.
  7. Τι είναι ένα StreamSource, και πώς βοηθά στην επεξεργασία XML;
  8. Ο StreamSource παρέχει είσοδο για δεδομένα XML, τα οποία είναι απαραίτητα για την εφαρμογή μετασχηματισμών σε μια διαδικασία επικύρωσης που βασίζεται σε XSLT.
  9. Μπορεί το JUnit να χρησιμοποιηθεί για τη δοκιμή χειρισμού σφαλμάτων επικύρωσης XML;
  10. Ναι, οι δοκιμές JUnit προσομοιώνουν μη έγκυρες εισόδους XML για να επαληθεύσουν εάν ο σωστός χειρισμός σφαλμάτων καταγράφει μηνύματα επικύρωσης εκτός του StackTrace.
  11. Τι ρόλο παίζει το XsltTransformer παίζω σε επικύρωση XML;
  12. Ο XsltTransformer εφαρμόζει ένα φύλλο στυλ XSLT σε XML, επιτρέποντας δομημένη επικύρωση με μηνύματα λάθους με δυνατότητα ενεργοποίησης.
  13. Είναι δυνατό να αυτοματοποιηθεί η καταγραφή σφαλμάτων XML για προσαρμοσμένες επικυρώσεις XSD;
  14. Ναι, χρησιμοποιώντας α CustomErrorHandler στη μέθοδο επικύρωσης XML αυτοματοποιεί τη λήψη μηνυμάτων σφάλματος που βασίζονται σε XSD ή XSLT.
  15. Μπορούν να χρησιμοποιηθούν κανονικές εκφράσεις για ανάλυση αρχείων καταγραφής στην Java;
  16. Ναί, Pattern και Matcher μπορεί να αντιστοιχίσει μηνύματα σφάλματος σε αρχεία καταγραφής, απομονώνοντας σημαντικές πληροφορίες βάσει προσαρμοσμένων συνθηκών.
  17. Γιατί είναι απαραίτητη η επικύρωση XML σε ρυθμιστικές εφαρμογές;
  18. Η επικύρωση XML διασφαλίζει την ακεραιότητα των δεδομένων και τη συμμόρφωση με τα ρυθμιστικά πρότυπα, ιδιαίτερα σε τομείς όπως η χρηματοδότηση και η υγειονομική περίθαλψη.
  19. Είναι απαραίτητο το Saxon για το χειρισμό επικυρώσεων XML σε Java;
  20. Το Saxon παρέχει προηγμένες λειτουργίες επεξεργασίας XML και XSLT, καθιστώντας το εξαιρετικά αποτελεσματικό για πολύπλοκες επικυρώσεις που δεν καλύπτονται από τις προεπιλεγμένες βιβλιοθήκες της Java.

Τελικές σκέψεις σχετικά με τη λήψη σφαλμάτων εκτός StackTrace

Η καταγραφή σφαλμάτων επικύρωσης XML εκτός του StackTrace είναι απαραίτητη για τον αποτελεσματικό εντοπισμό σφαλμάτων σε πολύπλοκες εφαρμογές. Εφαρμόζοντας προσαρμοσμένους χειριστές σφαλμάτων και αξιοποιώντας προγράμματα ακρόασης μηνυμάτων, οι προγραμματιστές Java μπορούν να υποκλέψουν και να αποθηκεύσουν σημαντικά μηνύματα σφάλματος επικύρωσης.

Αυτή η προσέγγιση, σε συνδυασμό με την ανάλυση αρχείων καταγραφής και τη δοκιμή μονάδων, διασφαλίζει ότι όλα τα κρίσιμα μηνύματα είναι προσβάσιμα. Είτε χρησιμοποιούν το API του Saxon είτε κανονικές εκφράσεις για ανάλυση αρχείων καταγραφής, αυτές οι μέθοδοι ενισχύουν τον χειρισμό σφαλμάτων, προάγοντας τη σταθερότητα και την ακρίβεια των δεδομένων σε εφαρμογές που εξαρτώνται από την επικύρωση XML.

Πηγές και αναφορές για χειρισμό σφαλμάτων επικύρωσης Java XML
  1. Αναλυτικές πληροφορίες για Saxon API Η χρήση για επικύρωση XML και XSLT μπορεί να βρεθεί στην επίσημη τεκμηρίωση Saxon στη διεύθυνση Saxonica Documentation .
  2. της Java Πρότυπο και Ταίριασμα οι κλάσεις, απαραίτητες για την ανάλυση αρχείων καταγραφής με regex, τεκμηριώνονται στο Oracle Java SE API .
  3. Για πληροφορίες σχετικά με την εφαρμογή JUnit για τη δοκιμή επικύρωσης σφαλμάτων XML, ανατρέξτε στην τεκμηρίωση του πλαισίου δοκιμών JUnit στη διεύθυνση Οδηγός χρήσης JUnit .
  4. Ο Οδηγός προγραμματιστή Java και XML παρέχει πρόσθετα παραδείγματα και πλαίσιο για τη χρήση προσαρμοσμένων εργαλείων χειρισμού σφαλμάτων στην επικύρωση XML, προσβάσιμα στο Άρθρα προγραμματιστών Oracle .