0

考虑以下 XSD 片段:

<xs:element name="Persons">
    <xs:sequence>
        <xs:element name="Person" type="personType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
</xs:element>
<xs:complexType name="personType">
    <xs:sequence>
        <xs:element name="First_Name" type="xs:string"/>
        <xs:element name="Last_Name" type="xs:string"/>
    </xs:sequence>
</xs:complexType>

现在考虑一个基于 XML 的应用程序,当使用此 XSD 创建新文档时,默认情况下应该实例化一些具有特定值的元素。例如:

<Persons>
    <Person>
        <First_Name>Joe</First_Name>
        <Last_Name>Bloggs</Last_Name>
    </Person>
    <Person>
        <First_Name>John</First_Name>
        <Last_Name>Doe</Last_Name>
    </Person>
</Persons>

我可以将此行为硬编码为我的应用程序业务逻辑的一部分。

但是,考虑到我可能希望为部署我的应用程序的不同组织自定义这些默认人员。

在我看来,一个更优雅的解决方案(比硬编码,具有一定的可配置性)是以某种方式将默认实例化规则绑定到 XSD 中描述的特定元素,也许使用我不知道的其他技术或标准的。

是否存在这样的技术或标准?或者也许还有其他我没有考虑过的方法来实现这一点?

4

1 回答 1

0

我不知道任何这样的标准或技术。

您可以做的是使用xs:appinfo元素在架构中添加自定义信息:

<xs:complexType name="personType">
    <xs:documentation>
      <xs:appInfo>
         <xsext:sampleData xmlns:xsext="some namespace">
           <Person>
             <First_Name>Joe</First_Name>
             <Last_Name>Bloggs</Last_Name>
           </Person>
         </xsext>
      </xs:appInfo>
    </xs:documentation>
    <xs:sequence>
        <xs:element name="First_Name" type="xs:string"/>
        <xs:element name="Last_Name" type="xs:string"/>
    </xs:sequence>
</xs:complexType>
于 2013-05-29T21:33:29.523 回答