2017-05-22 71 views
0

我有以下XSD:我們可以提供XSD屬性元數據嗎?

<?xml version="1.0"?> 
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="https://www.w3schools.com" 
      xmlns="https://www.w3schools.com" 
      elementFormDefault="qualified"> 
    <xs:element name="rootNode" type="records" /> 
    <xs:complexType name="records"> 
     <xs:sequence> 
      <xs:element name="element1" type="type-attrbute-grp" /> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="type-attrbute-grp"> 
     <xs:attributeGroup ref="attribute-grp" /> 
    </xs:complexType> 
    <xs:attributeGroup name="attribute-grp"> 
     <xs:attribute name="scale" type="xs:int" use="required" /> 
     <xs:attribute name="date" type="xs:date" use="required" /> 
    </xs:attributeGroup> 
</xs:schema> 

而且我在下面創建XML:

<?xml version="1.0" encoding="UTF-8"?> 
<p:rootNode xmlns:p="https://www.w3schools.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.w3schools.com test2.xsd "> 
    <p:element1 date="2001-01-01" scale="7"/> 
</p:rootNode> 

我們可以提供關於與屬性的元素的詳細信息。但是,我的問題是我們能否提供關於屬性的元數據? 我的目標是在UI中將「element1」顯示爲表格行,將「date」/「scale」顯示爲表格中的列。另外,我想爲縮放和日期列添加一些驗證,以及我想在XSD中提供的信息。即什麼驗證器應該適用於縮放以及我想在縮放單元格上顯示哪個小部件?

回答

1

您可以將自己的元數據添加到大多數xsd實體。你用它做什麼然後由應用程序使用它。

在以下示例中,MyColumnInfo元素已附加到scale屬性。

<xs:attribute name="scale" type="xs:int" use="required"> 
    <xs:annotation> 
    <xs:appinfo> 
     <MyColumnInfo width="10" xmlns="" /> 
    </xs:appinfo> 
    </xs:annotation> 
</xs:attribute> 

大多數SOM(模式對象模型)分析器將允許您訪問此信息。但解析模式往往有點棘手,所以看起來像一個快速的工作可以迅速變成一個相當大的任務。

在.Net中,您有XsdSchema類,您可以將模式讀入並導航它。在Java中,你可以使用xerces。

+0

謝謝Sprotty !!我嘗試了2個解析器,一個來自「membrane-soa.org」,它沒有正確解析註釋,第二個來自「http://ws.apache.org/xmlschema/xmlschema-core/」,但它有點複雜。你知道除了jaxb以外的其他解析器嗎? –

+1

Xerces有一個模型(https://xerces.apache.org/xerces2-j/javadocs/xs/org/apache/xerces/xs/XSModel.html),它是一個非常薄的層,可以覆蓋實際的XML數據記得。 JABX是一個XML數據綁定器(還有其他一些),您可以自定義它以獲取appInfo數據並對其執行操作。這取決於你試圖達到的目標,以及你是否希望自己編寫代碼或希望得到一個開箱即用的解決方案。 – Sprotty

相關問題