2013-04-11 74 views
0

我在XML模式中有模式。它是:XML模式中的無效模式

<xs:pattern value="^[^\u00A4\u00A6\u007C\u00A7\u0022]+$"/>. 

但當架構通過Altova的打開,我們得到的錯誤

架構似乎並沒有被有效本身(如另一個架構它可能仍然是部分好的)...值^[^\u00A4\u00A6\u007C\u00A7\u0022]+$不是一個常規的xml表達式

我看不出任何錯誤的表達式。任何人都可以幫我找出問題嗎?

+0

對不起,這裏是從實際的模式該模式現在是一個有效的XSD正則表達式,但沒有打算使用這個正則表達式,因爲在XSD正則表達式中,「Xs:pattern value =」^ [^ \ u00A4 \ u00A6 \ u007C \ u00A7 \ u0022] + $「/> – 2013-04-11 20:35:14

回答

0

簡單的解決這裏,從Javascript更新XML格式的字符引用:

<xs:pattern value="^[^&#x00A4;&#x00A6;&#x007C;&#x00A7;&#x0022;]+$"/> 

-------------編輯---------- ----------

感謝Michael Kay指出了錨定監督。如果你想禁止使用的字符¤|的|」,那麼這就是你的模式:

<xs:pattern value="[^&#x00A4;&#x00A6;&#x007C;&#x00A7;&#x0022;]+"/> 

從規格:

Note: Unlike some popular regular expression languages (including those defined by Perl and standard Unix utilities), the regular expression language defined here implicitly anchors all regular expressions at the head and tail, as the most common use of regular expressions in ·pattern· is to match entire literals. 

http://www.w3.org/TR/xmlschema-2/#regexs

+0

」 ^「和」$「是普通字符,而不是元字符。在這種情況下,您可以忽略它們,因爲XSD模式fac et隱含地錨定在字符串的開始和結尾處。 – 2013-04-12 07:09:30