1
有沒有方法根據XSD驗證preferences對象?由於preferences文件在我看來是以XML文件爲基礎,所以應該可以這樣做。有關該主題的任何建議將不勝感激。根據XSD驗證Java首選項對象
有沒有方法根據XSD驗證preferences對象?由於preferences文件在我看來是以XML文件爲基礎,所以應該可以這樣做。有關該主題的任何建議將不勝感激。根據XSD驗證Java首選項對象
似乎沒有爲Java的preferences.dtd正式XSD版本,但它是很容易創建一個:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="preferences">
<xs:complexType>
<xs:sequence>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element ref="map"/>
<xs:element name="node" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="system"/>
<xs:enumeration value="user"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="EXTERNAL_XML_VERSION" default="0.0"/>
</xs:complexType>
</xs:element>
<xs:element name="map">
<xs:complexType>
<xs:sequence>
<xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="key" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="node">
<xs:complexType>
<xs:sequence>
<xs:element ref="map"/>
<xs:element ref="node" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
我希望我不要誤會什麼,但對[javadoc的( https://docs.oracle.com/javase/8/docs/api/java/util/prefs/Preferences.html)的偏好類有部分指向http://java.sun.com/dtd/preferences .dtd。這仍然足夠。訪問給定的鏈接將下載給定的DTD。 –
也許是我誤解了你的問題。我認爲要驗證首選項XML,您不希望使用* DTD *(哪*是*可用),而是* XSD *(它是*不可*)。 – kjhughes
我將編輯這個問題,因爲它似乎並不清楚我需要什麼:(所以我需要一種方式,給定的首選項文件具有所需的格式。所以我需要確保:給定的屬性只有給定的格式我們只說一個給定的價值,屬性剛剛給出了名字等等 –