0
私はこのようなXMLスニペットを持っています。たとえば、フィールド属性 'name'がportの場合、それは数字であるかどうか( '\ p {Nd} +'のような)に一致する必要があります。XSD 1.1のXSD属性値ベースの正規表現検証はアサートします
私のXSDで<Data>
<Attributes>
<Field name="nodeType">abcd</Field>
<Field name="port">5462</Field>
</Attributes>
</Data>
<xs:element name="Field" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:assert test="if(@name='port') then matches($value,'\p{Nd}+') else false())"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
以下のように、私はアサートを使用しています。しかし、私が実行したときに、私はあなたが迷走を持って
xml is NOT valid reason:org.xml.sax.SAXParseException;cvc-xpath.3.13.4.2a: XPST0003 - Assertion XPath expression ('if(@name='port') then matches($value,'\p{Nd}+') else false())') on the schema type '#AnonType_FieldAttributesDataContainerRtms' couldn't compile successfully
はい、それは問題でした。しかし、構文を正しくした後でも、上記のユースケースでは正規表現の一致は起こっていません。 xmlは有効な理由ではありません:org.xml.sax.SAXParseException; systemId:file:/ C:/RTMS_Code/trunk/RestClient/conf/xml/NetConf_Node_XML_Template.xml。 lineNumber:5; columnNumber:47; cvc-assertion:スキーマタイプ '#AnonType_FieldAttributesDataContainerRtms'の要素 'Field'のアサーション評価( 'if(@ name =' port ')は、($ value、' \ p {Nd} + ')else false()成功しませんでした –
@nameが "port"と等しくない場合、アサーションは失敗します。 –