[英]Combining XML Schemas
在可能的情況下,是否有任何Java庫允許組合架構?
我正在創建一個應用程序,用戶可以在該應用程序中將多個“ Generators”鏈接到用戶定義的(可能是XML)數據集,每個“ Generator”都有一個模式(可能是XSD),然后用戶可以輸入對此有效的數據模式,最好將XSD輕松組合為一個-這樣整個數據集將與組合的XSD匹配,並與每個Generator的模式匹配。
我知道XSD可能會發生沖突,但這不是問題,但是如果這完全不可能,那么其他解決方案又是什么呢?
實際上,您可以有單獨的XSD,這些XSD被“導入”到其他模式。 這非常簡單,在“復合”模式中,您只需要使用“ import:schemaLocation”。 請參閱我在項目中使用的代碼中的以下示例:
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://test/interactions/AddToContext"
xmlns:tns="http://test/interactions/AddToContext" xmlns:basictypes="http://test/interactions/BasicTypes" elementFormDefault="qualified">
<import schemaLocation="BasicTypes.xsd"
namespace="http://test/interactions/BasicTypes">
</import>
<!-- Request Message -->
<element name="AddToContextRequest">
<complexType>
<sequence>
<choice>
<element name="ServiceIdToAdd" type="string" maxOccurs="unbounded" />
<element name="ValueToAdd" type="basictypes:ContextValue" maxOccurs="unbounded" />
</choice>
</sequence>
</complexType>
</element>
<!-- Response message -->
<element name="AddToContextResponse">
<complexType>
<sequence>
<element name="Result" type="string" />
</sequence>
</complexType>
</element>
</schema>
您可以看到我已經將“ BasicTypes”模式導入了該模式...
如果要使用此架構作為參考來生成Java代碼(類)以操作這些對象,則可以使用“ xjc ”(XML綁定編譯器)...這非常有用!
我希望這有幫助! 干杯!
在新的XSD中組合基本類型:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://test/interactions/AddToContext"
xmlns:tns="http://test/interactions/AddToContext" elementFormDefault="qualified">
<complexType name="ContextValue">
<sequence>
<element name="ValueID" type="string" />
<choice>
<sequence>
<element name="Value" type="string" />
<element name="ID" type="string" />
</sequence>
<element name="InfoValue" type="string" />
</choice>
</sequence>
</complexType>
<!-- Request Message -->
<element name="AddToContextRequest">
<complexType>
<sequence>
<choice>
<element name="ServiceIdToAdd" type="string" maxOccurs="unbounded" />
<element name="ValueToAdd" type="tns:ContextValue" maxOccurs="unbounded" />
</choice>
</sequence>
</complexType>
</element>
<!-- Response message -->
<element name="AddToContextResponse">
<complexType>
<sequence>
<element name="Result" type="string" />
</sequence>
</complexType>
</element>
</schema>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.