Re: [xml] XML Schema Help



I'm not at all sure this is a proper list for asking schema
questions. 

So I need to make sure that Policy -> Preferences ->
ServerPreferences -> preference -> name = TARGETS exists as a
preference in ServerPreferences, however, I need to allow other
preferences as well but TARGETS must be present.
any suggestions?

First, unless you really have to, don't use the W3C XML Schema
language.

In RELAX NG, you could use something like:

| start = element serverPreferences {
|      others, TARGETS, others
|      }
| TARGETS = element preference {
|     element name { "TARGETS" },
|     element value { value }
|     }
| others = element preference {
|     element name { prefName },
|     element value { value }
|     }+
| value = ("B" | "C" | "D" )
| prefName = ("A" | "X" | "Y" | "Z")

But this is the sort of thing I would usually do by adding a
Schematron check, rather than using grammar-based validation. E.g.,

| <?xml version="1.0" encoding="UTF-8"?>
| <schema xmlns="http://purl.oclc.org/dsdl/schematron";>
|   <pattern>
|     <rule context="ServerPreferences">
|       <assert test="preference/name[.='TARGETS']">
|         Server preferences should always have a TARGET preference.
|       </assert>
|     </rule>
|   </pattern>
| </schema>

Note: these code fragments are untested.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]