ความแตกต่างระหว่างxsd:include
และxsd:import
คืออะไร คุณจะใช้อันใดอันหนึ่งแทนอันอื่นและเมื่อไรมันก็ไม่สำคัญ
ความแตกต่างระหว่างxsd:include
และxsd:import
คืออะไร คุณจะใช้อันใดอันหนึ่งแทนอันอื่นและเมื่อไรมันก็ไม่สำคัญ
คำตอบ:
ความแตกต่างพื้นฐานระหว่างinclude
และimport
คือคุณต้องใช้import
เพื่ออ้างถึงการประกาศหรือคำจำกัดความที่อยู่ในเนมสเปซเป้าหมายที่แตกต่างกันและคุณต้องใช้include
เพื่ออ้างถึงการประกาศหรือคำจำกัดความที่ (หรือจะเป็น) ในเนมสเปซเป้าหมายเดียวกัน
ที่มา: https://web.archive.org/web/20070804031046/http://xsd.stylusstudio.com/2002Jun/post08016.htm
ใช้xsd: includeเพื่อนำ XSD มาจากเนมสเปซเดียวกันหรือไม่มี
ใช้xsd: นำเข้าเพื่อนำมาใน XSD จากที่แตกต่างกัน namespace
ความแตกต่างอีกประการหนึ่งคือ<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"/>
namespace
ททริบิวต์ของ<xs:import>
) นั้นใช้ได้เสมอและถือว่าเป็นตัวระบุ (เพียงแค่ข้อความไม่ถูกตีความ) ในขณะที่schemaLocation
โดยทั่วไปจะต้องประมวลผล (URL ที่ไม่ใช่ URI) เพื่อแก้ไข และที่จริงแล้วชุดรูปแบบclasspath:
URL เฉพาะ Java อาจไม่มีความหมายอะไรเลย แต่นอกเหนือจากนี้อย่างพิถีพิถันนี้เป็นความคิดเห็นที่มีค่าขอบคุณ
ฉันสนใจสิ่งนี้เช่นกัน คำอธิบายเดียวที่ฉันพบคือxsd:include
ใช้สำหรับการรวม intra-namespace ในขณะที่ใช้xsd:import
สำหรับการรวม inter-namespace
ใบเสนอราคาโดยตรงจากMSDN: <xsd: import> Element ส่วนหมายเหตุ
ความแตกต่างระหว่างองค์ประกอบที่รวมและองค์ประกอบที่นำเข้าคือองค์ประกอบที่นำเข้าช่วยให้การอ้างอิงถึงองค์ประกอบสคีจากเอกสารสคีที่มีเนมสเปซเป้าหมายที่แตกต่างกันและองค์ประกอบรวมเพิ่มองค์ประกอบสคีมาจากเอกสารสคีอื่น ๆ ที่มีเนมสเปซเป้าหมายเดียวกัน ) ไปยังสคีมาที่มี กล่าวโดยย่อองค์ประกอบการนำเข้าจะช่วยให้คุณใช้องค์ประกอบสคีมาจากสคีมาใด ๆ รวมถึงองค์ประกอบที่ช่วยให้คุณสามารถเพิ่มส่วนประกอบทั้งหมดของสคีมารวมกับสคีที่มี
ใช้ xsd: include นำการประกาศและคำจำกัดความทั้งหมดของเอกสารสกีมาภายนอกเข้าสู่สคีมาปัจจุบัน
ใช้ xsd: อิมพอร์ตเพื่อนำ XSD มาจากเนมสเปซอื่นและใช้เพื่อสร้างสคีมาใหม่โดยขยายเอกสารสคีมาที่มีอยู่