Ich bin ziemlich neu zu xsds, und derzeit die xsd, die ich verwende, validiert nur auf einige Maschinen. Es funktioniert auf meinem lokalen Computer, aber wenn ich dies auf einem Computer mit einigen Proxies oder Firewalls versuche, funktioniert es nicht mehr. Die Schemas, die ich verwende, werden jedoch lokal verwendet. Hierxsd überprüft auf einigen Systemen nicht: "Der Name kann nicht in eine (n) 'Typdefinitionskomponente aufgelöst werden."
ist der Fehler, den ich bekommen, wenn das XSD-Schema zu validieren versucht:
src-resolve: Kann nicht den Namen auflösen 'xenc: EncryptedDataType' auf eine (n) 'Typdefinition' Komponente.
, die von diesem Code kommt:
boolean validate(URL schemaUrl) {
SchemaFactory schemaFactory = SchemaFactory
.newInstance("http://www.w3.org/2001/XMLSchema");
Schema schema = null;
try {
schema = schemaFactory.newSchema(schemaUrl); //this is where the exception is thrown
} catch (SAXException e) {
//exception is caught here
return false;
}
//... more code here
}
Der Fehler hat den gleichen Stack-Trace wie diese: SAXParseException; src-resolve: Cannot resolve the name '...' to a(n) 'type definition' component
ich meine Haupt xsd haben, die ungefähr so beginnt:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:tns="http://customization.elster.com/shipment"
targetNamespace="http://customization.client.com/introduction"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
version="1.1" >
<xs:import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="xenc-schema.xsd"/>
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
in diesem Haupt-XML-I n eed die "xenc: EncryptedDataType"
<xs:complexType name="NamedEncryptedDataType">
<xs:complexContent>
<xs:extension base="xenc:EncryptedDataType">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
, die in dem xenc-schema.xsd definiert ist (die im selben Ordner wie mein Haupt xsd ist)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE schema PUBLIC "-//W3C//DTD XMLSchema 200102//EN"
"http://www.w3.org/2001/XMLSchema.dtd"
[
<!ATTLIST schema
xmlns:xenc CDATA #FIXED 'http://www.w3.org/2001/04/xmlenc#'
xmlns:ds CDATA #FIXED 'http://www.w3.org/2000/09/xmldsig#'>
<!ENTITY xenc 'http://www.w3.org/2001/04/xmlenc#'>
<!ENTITY % p ''>
<!ENTITY % s ''>
]>
<schema xmlns='http://www.w3.org/2001/XMLSchema' version='1.0'
xmlns:xenc='http://www.w3.org/2001/04/xmlenc#'
xmlns:ds='http://www.w3.org/2000/09/xmldsig#'
targetNamespace='http://www.w3.org/2001/04/xmlenc#'
elementFormDefault='qualified'>
<import namespace='http://www.w3.org/2000/09/xmldsig#'
schemaLocation='xmldsig-core-schema.xsd'/>
in diesem xenc-Schema gibt es die Täter Datentyp:
<element name='EncryptedData' type='xenc:EncryptedDataType'/>
<complexType name='EncryptedDataType'>
<complexContent>
<extension base='xenc:EncryptedType'>
</extension>
</complexContent>
</complexType>
ich habe versucht, diese Frage kürzer zu halten, lassen Sie mich wissen, wenn mehr Informationen benötigt werden, vielen dank für das Lesen.
Scheint, dass das Entfernen des Doctype vollständig, mit der DTD den Trick. Danke für den Vorschlag. –
@VladIlie, ich glaube, ich habe einen früheren Kommentar gesehen: keinen externen Traffic zu sehen. Nur um sicherzustellen, dass Sie für Java-Anwendungen Ihre Proxy-Informationen konfigurieren müssen - diese [link] (http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureJavaApp) könnte hilfreich sein. –
Sie sind richtig, danke @PetruGardea –