2013-05-07 72 views
4
爲我工作

我寫了一個簡單的XSD,我已經寫了下面的XSD模式XSD -xml正則表達式驗證不使用JAXB

<xsd:element name="xx"> 
<xsd:simpleType > 
    <xsd:restriction base="xsd:string"> 
     <xsd:pattern 
      value="^[a-z]+"> 
     </xsd:pattern> 
    </xsd:restriction> 
</xsd:simpleType> 
</xsd:element> 

當我使用JAXB總是遇到XX標籤的錯誤執行XML,XSD驗證。例如:

<xx>abcd</xx> 

我不知道爲什麼這種奇怪的行爲?我希望我的正則表達式是正確的,上面的例子應該通過驗證。我錯過了什麼?

回答

6

您需要從表達式中移除錨點^。 XSD驗證程序不識別^或$錨,但將它們解釋爲文字字符。您可以通過將XML更改爲<xx>^abcd</xx>並根據當前XSD對其進行驗證來驗證此情況。

原因是您的模式自動綁定到字符串的開頭和結尾。與試圖匹配值的正則表達式不同,此正則表達式將驗證元素的全部內容,因此您必須創建一個模式以完全匹配顯示在該字段中的所有內容。