Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.1k views
in Technique[技术] by (71.8m points)

xml - XSD element name pattern matching

I'm trying to make an XSD to validate some XML I'm getting back from a web service. It looks something like this:

<values>
    <value_1>asdf</value_1>
    <value_2>asdf</value_2>
    <value_3>asdf</value_3>
    <value_4>asdf</value_4>
    <value_5>asdf</value_5>
</values>

The number of inner value nodes is unbounded, but they always end with the _ + number suffix. Is it possible to to write an XSD that validates the node names themselves?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

XSD 1.1 solution

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="values">
    <xs:complexType>
        <xs:sequence>
            <xs:any maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:assert test="every $e in * 
                         satisfies matches(local-name($e), 'value_[0-9]+')"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...