我對xsd很新穎。我也在Q & A上發現了很多問題,但無法解決我的問題。我有一個html文件,我想使用xsd驗證進行驗證。我正在使用的標準是http://www.ihe.net/uploadedFiles/Documents/Radiology/IHE_RAD_Suppl_MRRT.pdf。它說html文件格式化的方式,應該可以使用任何xml驗證器來驗證它。注意這個問題XSD for same tag different attribute names,有點接近,但不是我想要的。這是我想驗證使用xsd多次驗證同一個字段具有不同的屬性
<!DOCTYPE html>
<html>
<head>
<tittle>Hello World</title>
<meta charset="UTF-8"/>
<meta name="d1" content="c1"/>
<meta name="d2" content="c2"/>
</head>
</html>
的HTML的部分標準稱必須正好1屬性字符集的meta標籤,以及零個或多個帶屬性的名稱和內容。所以我試圖製作下面的xsd文件。
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="html">
<xs:complextType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="meta">
<xs:complexType>
<xs:attribute name="charset" type="xs:string"/>
</xs:complexType>
</xs:element>
<!-- obviously this wouldn't work -->
<xs:element name="meta" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="content" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
很顯然,上述模式由於元素元素的重複而不起作用。我收到一個多重元素錯誤。所以我試圖在下面的組元素中說唱其他元標籤,但即使這樣也行不通。
<xs:group name="otherMetatags">
<xs:element name="meta" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="content" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:group>
</xs:schema>
我知道我的兩個方法似乎是愚蠢的,但就像我前面說的,是新的XSD。
您給出的問題所面臨的例子有很大的差異。首先,我嘗試限制一個元素具有特定的值,但試圖限制1個元素具有特定的屬性,並且不應該包含其他元素的屬性 – ivange94
這一點並不是爲您提供完全匹配,而是爲了告訴你實現你的目標的方式。在我們任何一方投入更多時間在基於斷言的解決方案之前,請檢查您的驗證工具是否支持XSD 1.1 - 許多不支持。此外,請[**接受**](http://meta.stackoverflow.com/q/5234/234215)對先前問題的一些答案。謝謝。 – kjhughes
感謝您的幫助。我使用標準的java驗證api來做我的驗證(特別是java8)。關於這些問題,那裏的答案並沒有真正解決我的問題,也沒有解決好問題。我雖然接受了1。它接近我最終做的。 – ivange94