我有一個基本的 XSD (base.xsd):
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="TenantId">
<xs:annotation>
<xs:documentation>
Represents a tenant id.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-z0-9\.]{3,62}" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
我正在嘗試在 extension.xsd 中修改它:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:redefine schemaLocation="./base.xsd">
<xs:simpleType name="TenantId">
<xs:restriction base="TenantId">
<xs:pattern value="\{Settings:.*\}" />
</xs:restriction>
</xs:simpleType>
</xs:redefine>
</xs:schema>
添加額外的允許模式。我正在針對 extension.xsd 驗證 XML,并且“{Settings:Something}”形式的字串仍然被標記為不匹配“[A-Za-z0-9.]{3,62}”。如何在不修改 base.xsd 檔案的情況下附加其他允許的限制模式?
uj5u.com熱心網友回復:
使用xs:redefine,您可以通過限制或擴展來細化型別。
通過限制,您只能減少允許的值集,而不能增加它。
擴展允許您允許額外的內容,但它不允許您允許現有內容的附加值。
基本上,模式是您的資料必須遵守的一組規則,并且xs:redefine被設計為使資料仍然符合這些規則。你不能以你嘗試的方式使用它。
如果您有 XSD 1.1,您可以使用xs:override,它具有不同的理念。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359597.html
