Announcement

Collapse
No announcement yet.

beim parsen gegen mehrere Schemata validieren

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

  • beim parsen gegen mehrere Schemata validieren

    Ich validiere beim Pasren gegen ein Schema das weitere Schematas importiert.
    Alle Schematas ahben den selben targetNamespace.
    Laut XML-Spy (MSXML-Parser 4.0) sind die Schemata wellformed und valid
    wenn ich gegen diese in meinen Programm validieren lasse (hier benutze ich xerces) kommt folgende Fehlermeldung:
    <I>
    Schema in Namespace_002-1.xsd has a different target namespace from the one specified in the instance document :..
    </I>

    In der XML-Datei habe ich die Namespaces wie folgt definiert:
    <PRE>
    &lt; config xmlns="http://www.TEST.de/2002/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.TEST.de/2002/XMLSchema
    C:\TEST\Namespace_002-1.xsd"&gt;
    </PRE>
    In den Schema-Dateien habe ich folgende Namespaces verwendet:
    <PRE>
    &lt; xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.TEST.de/2002/XMLSchema"
    xmlns:TEST="http://www.TEST.de/2002/XMLSchema"
    elementFormDefault="unqualified"
    attributeFormDefault="unqualified"&gt;
    &lt; xs:import namespace="http://www.TEST.de/2002/XMLSchema"
    schemaLocation="Namespace_002-2.xsd"/&gt;
    &lt; xs:import namespace="http://www.TEST.de/2002/XMLSchema"
    schemaLocation="Namespace_002-3.xsd"/&gt;
    </PRE>
    Was mach ich falsch - wie bring ich das ganze zum Laufen ohne einem jeden Tag ein Präfix zu verpassen ??

  • #2
    hab das Problem gelöst:

    <PRE>
    System.setProperty ("org.xml.sax.driver","org.apache.xerces.parsers.S AXParser");

    XMLReader xr=XMLReaderFactory.createXMLReader();

    xr.setFeature("http://apache.org/xml/features/validation/schema",true);

    xr.setFeature("http://xml.org/sax/features/validation",true);
    xr.setFeature("http://xml.org/sax/features/namespaces",false);
    xr.setFeature("http://apache.org/xml/features/validation/dynamic",true);

    xr.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",". TEST_002-1.xsd")

    </PRE>

    wichtig ist dabei : die Featers <br>namespaces = false </br> und <br> validation/dynamic = true </br>

    viele Grüße Michae

    Comment

    Working...
    X