2011-12-13 15 views
6

私はXML言語が新しく、xmlファイルが1つあり、そのファイルのxsdスキーマを作成しましたが、このスキーマをxmlファイルで参照する方法が問題です。私のxmlスキーマはこのようになりますxsdファイルをxmlで参照する

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:wmh="http://www.wmhelp.com/2003/eGenerator" 
    elementFormDefault="qualified" 
    targetNamespace="http://axis.com/service" 
    xmlns="http://axis.com/service" 
    version="1.0"> 

    <xs:element name="SWService" type="SWServiceType"/> 
    <xs:element name="HWService" type="HWServiceType"/> 


<xs:complexType name="SWServiceType"> 
<xs:sequence> 
    <xs:element name="Service" type="ServiceType" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
    </xs:complexType> 

<xs:complexType name="ServiceType"> 
<xs:complexContent> 
<xs:extension base="IdType"> 
    <xs:sequence> 
    <xs:element name="Description" type="xs:string" maxOccurs="1" minOccurs="0"/> 
    <xs:element name="ServiceCustomers" type="ServiceCustomersType" maxOccurs="1" 
minOccurs="0"/> 
    <xs:element name="ServiceSuppliers" type="ServiceSuppliersType" maxOccurs="1" 
minOccurs="0"/> 
    </xs:sequence> 
    <xs:attribute name="Name" type="xs:string" use="required"/> 
    </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 

    <xs:complexType name="HWServiceType"> 
    <xs:sequence> 
    <xs:element name="element" type="elementGroupType" maxOccurs="1" minOccurs="0"/> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="ServiceCustomersType"> 
    <xs:sequence> 
    <xs:element name="SoftWare" type="SoftWareType" maxOccurs="unbounded" 
    minOccurs="0"/> 
    </xs:sequence> 
    </xs:complexType> 

    <xs:complexType name="ServiceSuppliersType"> 
    <xs:sequence> 
    <xs:element name="SoftWare" type="SoftWareType" maxOccurs="unbounded" 
minOccurs="0"/> 
    <xs:element name="HardWare" type="HardWareType" maxOccurs="unbounded" 
    minOccurs="0"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="SoftWareType"> 
<xs:complexContent> 
<xs:extension base="PathType"> 
    <xs:attribute name="Service" type="xs:string" use="required"/> 
    </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

<xs:complexType name="HardWareType"> 
<xs:complexContent> 
<xs:extension base="PathType"> 
    <xs:attribute name="Type" type="xs:string" use="required"/> 
    <xs:attribute name="Nr" type="xs:string" use="required"/> 
    <xs:attribute name="Service" type="xs:string" use="required"/> 
    </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

<xs:complexType name="PathType"> 
    <xs:attribute name="Path" type="xs:string" use="required"/> 
</xs:complexType> 


    <xs:complexType name="elementGroupType"> 
<xs:sequence> 
     <xs:element name="element" type="elementType" maxOccurs="unbounded" 
minOccurs="1"/> 
    </xs:sequence> 
</xs:complexType> 


<xs:complexType name="elementType"> 
    <xs:sequence> 
    <xs:element name="LM" type="LMType2" maxOccurs="1" minOccurs="1"/> 
    <xs:element name="Service" type="ServiceType" maxOccurs="unbounded" minOccurs="0"/> 
    </xs:sequence> 
    <xs:attribute name="Type" type="xs:string" use="required"/> 
    <xs:attribute name="Nr" type="xs:string" use="required"/> 
    <xs:attribute name="Name" type="xs:string" use="required"/> 
</xs:complexType> 


    <xs:complexType name="LMType2"> 
    <xs:sequence> 
    <xs:element name="LowerMode" type="LowerModeType2" maxOccurs="unbounded" 
minOccurs="0"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="LowerModeType2"> 
<xs:complexContent> 
    <xs:extension base="IdType"> 
    <xs:attribute name="Probability" type="xs:double" use="required"/> 
    </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 


<xs:complexType name="IdType"> 
    <xs:attribute name="Id" type="xs:string" use="required"/> 
</xs:complexType> 

    </xs:schema> 

私はこのファイルをservice.xsdとして保存しました。 xmlファイルでこのスキーマを参照する必要がありますが、このように試しましたが検証はしません。

<?xml version="1.0" encoding="UTF-8"?> 
<Service xsi:schemaLocation="file:///C:/main/newfolder/service.xsd"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://axis.com/service"   
Version="1.0"> 
--------Xml data------- 
</Service> 

私は問題が何であるのかわからない。それは私がこの

<?xml version="1.0" encoding="UTF-8"?> 
<Service xsi:schemaLocation=""http://axis.com/service"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://axis.com/service"   
Version="1.0"> 
--------Xml data------- 
</Service> 

が、それでも同じ問題のように試してみました。この

No DTD of the document found 

のようなエラーが発生します。 xmlpadを使用してxmlファイルを検証すると 誰でも問題を解決できます。何か助けていただければ幸いです。

ありがとうございます。

+1

+1:私がしばらく見てきた最高の最初の投稿の1つ! –

+0

XMLの検証方法を記述できますか?あなたはいくつかの外部プログラムを使用していますか? – bbaja42

+0

@ bbaja42私はXMLPADを使用して検証しています。 – user234

答えて

1

次のインスタンス(あなたがあなたのスキーマにバージョンという属性を定義していない限り)

<Service xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://axis.com/service"> 
any string 
</Service> 

は反対細かい検証のschemaLocationの使用は完全にオプションで、バージョン属性は、インスタンスで間違っていますスキーマ:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:wmh="http://www.wmhelp.com/2003/eGenerator" 
    elementFormDefault="qualified" 
    targetNamespace="http://axis.com/service" 
    xmlns="http://axis.com/service" 
    version="1.0"> 
    <xs:element name="Service" type="xs:string"/> 
</xs:schema> 

私がしたのは、タイプAxisServiceTypeを文字列に置き換えただけでした。

エラーの原因を正確に特定するには、スキーマとインスタンス文書全体を確認する必要があります。

+0

返信いただきありがとうございます。私は別のxmlファイル形式、SWService、HWServiceに対して1つのxsdを書いています。ModuleSpecificationは異なるXMLファイルとSWService xmlファイルに関連しています.xsdはSWServiceTypeのように3つの異なるxmlファイルに対して参照されます。私は自分の投稿を編集した投稿を見ることができます。このxsdを3つの異なるxmlファイル形式で参照する必要があります。私はthatsを好きに助けてくれますか?私はこのxsdを名前空間なしで参照していれば、名前空間にはエラーがあります。 – user234

+0

申し訳ありませんが、インスタンスXMLドキュメントを構築するために、XSDスキーマ全体を提供する必要があります。 –

+0

私のxsdを見ることができますか?私はxsdスキーマ全体を提供しました。 – user234

関連する問題