Posted by jpluimers on 2016/10/12
A while ago, I heard about xmllint, a program that can parse and query xml from the command-line.
Later, I discovered it can also parse html, can recover from xml/html errors and has an interactive shell that has a lot of commands (see table below) to navigate through the loaded command.
The relevant command-line options:
--recover will output failing input to
stderr. You can ignore that using
Some good examples of usage are here:
The table of shell commands:
xmllint offers an interactive shell mode invoked with the –shell command. Available commands in shell mode include:
||display XML base of the node
||Display node if given or current node.
||Change the current node to path (if given and unique) or root if no argument given.
||Dumps information about the node (namespace, attributes, content).
||Show the structure of the subtree under path or the current node.
||Leave the shell.
||Show this help.
||Display memory usage.
||Load a new document with the given name.
||List contents of path (if given) or the current directory.
||Display the path to the current node.
||Leave the shell.
||Saves the current document to name if given or to the original name.
||Check the document for error.
||Write the current node to the given filename.
Posted in Development, HTML, HTML5, Software Development, Web Development, XML, XML/XSD, XPath | Leave a Comment »
Posted by jpluimers on 2016/07/27
It comes down to these cases for XML
maxOccurs="1" (which the default for
nillable="true" will convert from a regular type to a nullable type.
minOccurs="0" will add boolean …Specified properties in the generated C# for each element.
- you can have both
minOccurs="0" in an element which gets you a nullable type and a …Specified property.
Note I’m not considering
default here, nor
attributes (that have
use instead of
maxOccurs, but do not allow for nillable) nor larger values of
maxOccurs (which both xsd.exe and xsd2code regard as
From the above, XML has a richer type system than C#, so in XML there are subtle a differences between:
- an explicit
nil in the XML element
- the XML element being absent
- the XML element being empty.
Hopefully later more text and examples to show how to actually work with this.
From the specs:
Posted in .NET, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, C#, C# 2.0, C# 3.0, C# 4.0, C# 5.0, C# 6 (Roslyn), Development, Software Development, XML, XML/XSD, XSD | Leave a Comment »
Posted by jpluimers on 2016/04/26
One of the things you cannot do in XSD, is have string enumerations contain both a key and a value.
But there is a little appinfo trick inside annotation that you can user under some circumstances, for instance when you interpret the XSD:
appinfo is the application counterpart of documentation: both can contain any xml, but appinfo is aimed at machines, whereas documentation is aimed at humans.
Posted in Development, Software Development, XML, XML/XSD, XSD | Leave a Comment »
Posted by jpluimers on 2016/04/21
XSD enumerations are nice as they can be used to restrict simple XSD types to a set of values.
But they can also be hard if the set changes over time: restricting further is not possible, but extending isn’t always easy either.
Some interesting links:
Posted in Development, XML/XSD, XSD | Leave a Comment »
Posted by jpluimers on 2016/04/20
I tend to forget this: xsd.exe can resolve xs:include, but not xs:import. When using xs:import it will complain about missing types.
Simple solution: reference all imported XSDs (but not included XSDs) on the same command-line:
I was trying to create a C# class with xsd.exe from an schema that imports others schemas like that xsd.exe /c schema.xsd and it fails miserably reporting an error like “The datatype ‘xxx’ is missing.”. Basically xsd.exe doesn’t resolve the schemaLocation attribute.
Dare Obasanjo’s article addresses the problem, and Scott Hanselman had the same problem -and solved it-.
The solution isn’t very nice, but at least it’s simple. You have to tell xsd.exe all the schema referenced, xsd.exe /c schema.xsd importedSchema1.xsd importedSchema2.xsd
Be aware that the C# filename is sometimes generated from all XSD filenames on the command-line (I’ve noticed this when the import is specified before the actual XSD file, if the import is at the end, the name of the import is used.
If my memory serves me right, older versions of XSD.exe could not resolve unix-style relative paths on the command-line, but newer versions do.
via: Support of import in xsd.exe – Jose Luis Calvo Salanova – Site Home – MSDN Blogs.
Posted in .NET, C#, Development, Software Development, XML/XSD, XSD | Leave a Comment »