簡體   English   中英

在XSD有效XML中查詢原始XML模式

[英]Querying XSD-valid XML for the original XML schema

給定一個架構文檔(XSD格式)(例如MODS 3.5架構) (美國國會圖書館,LoC)和一個已知根據該架構有效的文檔(XML),例如反托拉斯與競爭政策博客檔案元數據2007年 (來自LoC Law Blawgs Web存檔的 HTML視圖 )中是否存在Java API,該Java API是否允許Java程序查詢XML文檔以獲取文檔元素所在的XML模式數據類型?

似乎我對XML模式和UML模型感到困惑。 我正在考慮XML模式,因為它表示類似UML模型(M1)的內容,然后是XML文檔,例如表示UML模型元素實例的用戶數據 (M0)。 類似地,如果可以查詢XML元素,確定該元素派生自符合解析樹中的XML模式數據類型或元素定義,我認為它可以提供一個不錯的功能用於ModeShape的音序

我認為,該想法本質上是: 可以在ModeShape JCR存儲庫中引用表示序列化XML文檔的XML元素的JCR節點,以將每個元素引用到表示XML模式數據類型的JCR節點,例如類型的代表JCR節點將在文檔使用的模式的排序中定義,例如已經由ModeShape XSD排序器進行了排序。

我只是不確定在Java中是否可能有一個API來確定XML模式元素,而不是有效的XML文檔元素-當根據XML模式驗證XML文檔時,該元素是否符合在解析樹中。 我的印象是可以執行這樣的計算。 簡而言之,我想知道是否可能已經有一個API?

或者,有UML ...

答案是肯定的。

在標准方面,根據架構驗證XML文檔會生成PSVI(架構驗證后信息集),並且PSVI會使用有關其針對哪種類型進行驗證的信息來裝飾解析樹中的節點。

在具體實現方面,如果您使用JAXP Validation API,則可以生成用TypeInfo擴展的DOM來告知每個節點的類型,或者可以使用基於SAX的驗證管道,在該管道中將類型信息通知給TypeInfoProvider。 。

您也可以使用可識別架構的XSLT和XQuery來執行此操作; 驗證操作后,節點將增加“類型注釋”,您可以使用“實例”測試來詢問。 如果您使用Saxon,則可以使用擴展功能saxon:type()或saxon:type-annotation()進行進一步的探索:

http://www.saxonica.com/documentation/#!functions/saxon/type http://www.saxonica.com/documentation/#!functions/saxon/type-annotation

XSLT / XQuery方法的局限性在於它僅在驗證成功的情況下起作用。 DOM / SAX接口還在驗證失敗的情況下提供信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM