2016-04-12 42 views
2

XML'imi başka bir XSD'de içe aktarılan bir XSD'ye karşı doğrulamaya çalışıyorum.İçe aktarılan XSD'ye karşı doğrulanamadı

xml1.xml:

<e1 xmlns="n1" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="n2 main.xsd"> 
</e1> 

xsd1.xsd:

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     targetNamespace="n1" 
     elementFormDefault="qualified"> 
<xsd:element name="e1"/> 
</xsd:schema> 

main.xsd:

aşağıdaki koda bir göz atın
<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     targetNamespace="n2" 
     elementFormDefault="qualified"> 

<xsd:import namespace = "n1" schemaLocation = "xsd1.xsd"/> 
</xsd:schema> 

(xml araçlarıyla veya java netbeans) xml1.xml doğrulama basitçe atar:

cvc-elt.1: Cannot find the declaration of element 'e1'. [3] 

Sorun ne olabilir?

cevap

2

xsi:schemaLocation modeliniz için ayarlama gerektirir. Otomatik olarak XSD'leri kapsam içine alan içerme eki değil; Doğrulamanın uygun bir XSD'yi bulabileceği belirli bir ad alanı için yazan bir ipucu.

Gümrüğe

, xsi:schemaLocation="n2 main.xsd", sen n2 ad alanı için main.xsd bakmaya ima yapıyor ancak gerçekte kök öğesiyle ilişkili n1 ad hakkında hiçbir şey söylemedim. Doğrulama, n1 ad kök öğesi, senin ipuçlarını danışır karşılaştığında hiçbir şey bulur ve bildiğiniz yapalım:

cvc-elt.1: Cannot find the declaration of element 'e1'. [3] 

olması gerektiği gibi. Sizin yol ileri net:

xsi:schemaLocation="n2 main.xsd n1 xsd1.xsd" 

ve XML belgesi başarıyla doğrular: kök elemanın n1 ad alanı için bir ipucu ekleyin.

+0

Teşekkür ederiz! BTW Ben xsd1 şemasını ana şemayla içe aktardığım için, yalnızca içe aktarılan ad alanını içerdiğinden ana kaynağa başvurmak için yeterli olduğunu umuyorum. Bu şekilde çalışmadığının farkına varmaya başladım, ancak ithal ad alanını bir önekle ilişkilendirmem ve ana şemada kullanmam gerekiyor. Ayrıca cevabın iyi olduğundan eminim, tekrar teşekkürler! – user1856926

İlgili konular