ความแตกต่างระหว่าง xsd: include และ xsd: import คืออะไร


คำตอบ:


206

ความแตกต่างพื้นฐานระหว่างincludeและimportคือคุณต้องใช้importเพื่ออ้างถึงการประกาศหรือคำจำกัดความที่อยู่ในเนมสเปซเป้าหมายที่แตกต่างกันและคุณต้องใช้includeเพื่ออ้างถึงการประกาศหรือคำจำกัดความที่ (หรือจะเป็น) ในเนมสเปซเป้าหมายเดียวกัน

ที่มา: https://web.archive.org/web/20070804031046/http://xsd.stylusstudio.com/2002Jun/post08016.htm


ฉันพบว่าคำอธิบายเหล่านี้มีประโยชน์เช่นกัน: xsd.stylusstudio.com/2005Mar/post05007.htm msdn.microsoft.com/en-us/library/ms256480.aspx
Pops

โพสต์ stylusstudio ที่ @Pops อ้างถึงอยู่ที่นี่: web.archive.org/web/20140831005739/http://xsd.stylusstudio.com/…
tony19


19

ความแตกต่างอีกประการหนึ่งคือ<import>อนุญาตให้นำเข้าโดยอ้างอิงไปที่เนมสเปซอื่น <include>อนุญาตการนำเข้าโดยอ้างอิง URI ที่มีสคีมารวมอยู่ด้วย นั่นเป็นข้อแตกต่างจากการนำเข้า namespace ระหว่างอินทราอีกอย่างแน่นอน

ตัวอย่างเช่นตัวตรวจสอบสกีมา xml อาจทราบตำแหน่งของสกีมาทั้งหมดด้วยเนมสเปซแล้ว โดยเฉพาะอย่างยิ่งการพิจารณาว่าการอ้างถึง XML เนมสเปซโดย URI อาจมีปัญหาในระบบต่าง ๆ ที่ classpath: // หมายถึงอะไรหรือที่ http: // ไม่ได้รับอนุญาตหรือที่ URI บางคนไม่ได้ชี้ไปที่สิ่งเดียวกัน ระบบอื่น

โค้ดตัวอย่างของการนำเข้าที่ถูกต้องและไม่ถูกต้องและรวมถึง:

ถูกต้อง:

<xsd:import namespace="some/name/space"/>
<xsd:import schemaLocation="classpath://mine.xsd"/>

<xsd:include schemaLocation="classpath://mine.xsd"/>

ไม่ถูกต้อง:

<xsd:include namespace="some/name/space"/>

ฉันคิดว่าคุณหมายถึงหมายถึง namespaces XML ตาม URL ที่ตั้งมากกว่าโดย URI URI ของเนมสเปซ (เช่นแอnamespaceททริบิวต์ของ<xs:import>) นั้นใช้ได้เสมอและถือว่าเป็นตัวระบุ (เพียงแค่ข้อความไม่ถูกตีความ) ในขณะที่schemaLocationโดยทั่วไปจะต้องประมวลผล (URL ที่ไม่ใช่ URI) เพื่อแก้ไข และที่จริงแล้วชุดรูปแบบclasspath: URL เฉพาะ Java อาจไม่มีความหมายอะไรเลย แต่นอกเหนือจากนี้อย่างพิถีพิถันนี้เป็นความคิดเห็นที่มีค่าขอบคุณ
ddevienne

7

ฉันสนใจสิ่งนี้เช่นกัน คำอธิบายเดียวที่ฉันพบคือxsd:includeใช้สำหรับการรวม intra-namespace ในขณะที่ใช้xsd:importสำหรับการรวม inter-namespace


0

ใบเสนอราคาโดยตรงจากMSDN: <xsd: import> Element ส่วนหมายเหตุ

ความแตกต่างระหว่างองค์ประกอบที่รวมและองค์ประกอบที่นำเข้าคือองค์ประกอบที่นำเข้าช่วยให้การอ้างอิงถึงองค์ประกอบสคีจากเอกสารสคีที่มีเนมสเปซเป้าหมายที่แตกต่างกันและองค์ประกอบรวมเพิ่มองค์ประกอบสคีมาจากเอกสารสคีอื่น ๆ ที่มีเนมสเปซเป้าหมายเดียวกัน ) ไปยังสคีมาที่มี กล่าวโดยย่อองค์ประกอบการนำเข้าจะช่วยให้คุณใช้องค์ประกอบสคีมาจากสคีมาใด ๆ รวมถึงองค์ประกอบที่ช่วยให้คุณสามารถเพิ่มส่วนประกอบทั้งหมดของสคีมารวมกับสคีที่มี


-3

ใช้ xsd: include นำการประกาศและคำจำกัดความทั้งหมดของเอกสารสกีมาภายนอกเข้าสู่สคีมาปัจจุบัน

ใช้ xsd: อิมพอร์ตเพื่อนำ XSD มาจากเนมสเปซอื่นและใช้เพื่อสร้างสคีมาใหม่โดยขยายเอกสารสคีมาที่มีอยู่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.