2016-07-29 52 views
1

私はxsdsにはかなり新しく、現在使用しているxsdはマシンでのみ検証されています。ローカルマシンで動作しますが、プロキシやファイアウォールが存在するマシンでこれを実行しようとすると、もう動作しません。私が使用しているスキーマはローカルで使用されています。一部のシステムでxsdが検証されません: "名前を(n) 'タイプ定義'コンポーネントに解決できません。

SRC-解決:ここ

は、XSDスキーマを検証しようとしているときに私が取得エラーです(n)は 「タイプの定義」コンポーネント:名「EncryptedDataTypeまた、xenc」を解決できません。私はこのような何かを開始し、私のメインのxsdを持って SAXParseException; src-resolve: Cannot resolve the name '...' to a(n) 'type definition' component

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 
} 

エラーは、この1と同じスタックトレースがあります。このコードから来

<?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"/> 

このメインXMLでは、このまた、xenc・スキーマに(私のメインのXSDと同じフォルダにある)また、xenc-schema.xsdで定義されています: "EncryptedDataTypeまた、xenc"

<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> 

<?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'/> 

EED

私はこの質問をもっと短くしていますが、もっと情報が必要な場合は教えてください。読んでいただきありがとうございます。

答えて

1

これらの問題を診断する最も良い方法は、HTTPデバッガをインストールすることです。例えば、Fiddlerはあなたにとってうまくいくはずです。外部から(インターネット上で)どのリソースが解決されたかを教えてください。

あなたの場合、おそらく原因は、xenc-schema.xsdファイルのDTDです。すぐにそれを証明するには、埋め込まれたDTDを取り除くだけです。この問題を証明したら、編集したXSDをそのまま使用するか、カスタムEntityResolverを使用するか、特定のライブラリにDTD処理を無効にするために設定できるプロパティがあるかどうかを確認することができます。

+0

DTDを使って完全にdoctypeを削除したようだと思われます。提案していただきありがとうございます。 –

+0

@ VladIlie、私は以前のコメントを見ました:外​​部のトラフィックは見られません。 Javaアプリケーションの場合は、プロキシ情報を設定する必要があります。この[リンク](http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureJavaApp)が役立つかもしれません。 –

+0

あなたは正しいです、ありがとう@PetruGardea –

関連する問題