C
Chris Lieb
I am new to XML Schema and am running into a bit of a snag. I have
defined an XML-based scripting language for an updater program that I
am working on. I would like to make a schema for this language since
malformed XML documents break the updater. (I did not have time to add
good error-handling code, so run-time errors can abound if the document
is malformed.)
A sample doc might look something like this:
<manifest>
<version major="1" minor="0" revision="1" base="1.0.1\files\"
doprevious="true">
<file action="copy" name="text.doc"/>
<folder action="create" name="temp"/>
<updater>
<file name="update.exe"/>
<file name="updaterlib.dll"/>
</updater>
</version>
<version major="1" minor="0" revision="0" base="1.0.0\files\"
doprevious="false">
<dll action="register" name="updaterlib.dll"/>
<cmd location="server" command="patch.bat">
<file name="patch.dat"/>
<file name="patch.bat"/>
</cmd>
</version>
</manifest>
Problem is that the second version element in the document, the updater
element, the dll element, and the cmd element all get flagged as
invalid. I guess that this stems from using a sequence in the complex
type. What should I use to allow all children elements of version
(file, folder, dll, msi, cmd, updater) to appear in any order and in
whatever quantity (except updater, which can only appear once)?
'all' looks like it comes close since it allows you to use elements in
any order, except my reading tells me that it only allows each element
to be used once and forces you to use all elements. 'choice' also
appears to come close since it allows you to choose which element you
want, but it only lets you choose one element from the set.
Also, one last thing: How do you set the max occurrence of an element
to be infinite?
Thanks in advance,
Chris
PS
I'm not posting the XSD right now. If you want it, I would be more
than happy to provide it. I am a little embarassed that I am designing
the XSD in Visual Studio 2005 instead of hand-coding it. I have no
idea if the XSD generated by VS2005 is considered to be of good
quality.
defined an XML-based scripting language for an updater program that I
am working on. I would like to make a schema for this language since
malformed XML documents break the updater. (I did not have time to add
good error-handling code, so run-time errors can abound if the document
is malformed.)
A sample doc might look something like this:
<manifest>
<version major="1" minor="0" revision="1" base="1.0.1\files\"
doprevious="true">
<file action="copy" name="text.doc"/>
<folder action="create" name="temp"/>
<updater>
<file name="update.exe"/>
<file name="updaterlib.dll"/>
</updater>
</version>
<version major="1" minor="0" revision="0" base="1.0.0\files\"
doprevious="false">
<dll action="register" name="updaterlib.dll"/>
<cmd location="server" command="patch.bat">
<file name="patch.dat"/>
<file name="patch.bat"/>
</cmd>
</version>
</manifest>
Problem is that the second version element in the document, the updater
element, the dll element, and the cmd element all get flagged as
invalid. I guess that this stems from using a sequence in the complex
type. What should I use to allow all children elements of version
(file, folder, dll, msi, cmd, updater) to appear in any order and in
whatever quantity (except updater, which can only appear once)?
'all' looks like it comes close since it allows you to use elements in
any order, except my reading tells me that it only allows each element
to be used once and forces you to use all elements. 'choice' also
appears to come close since it allows you to choose which element you
want, but it only lets you choose one element from the set.
Also, one last thing: How do you set the max occurrence of an element
to be infinite?
Thanks in advance,
Chris
PS
I'm not posting the XSD right now. If you want it, I would be more
than happy to provide it. I am a little embarassed that I am designing
the XSD in Visual Studio 2005 instead of hand-coding it. I have no
idea if the XSD generated by VS2005 is considered to be of good
quality.