XML validation: Difference between revisions
Content added Content deleted
Antoni Gual (talk | contribs) |
(Initial FutureBasic task solution added) |
||
Line 187: | Line 187: | ||
</pre> |
</pre> |
||
<p>Changing <code>wrong</code> to a boolean, e. g. <code>true</code>, The result (without -w) is <pre>[[Error, 0]]</pre> |
<p>Changing <code>wrong</code> to a boolean, e. g. <code>true</code>, The result (without -w) is <pre>[[Error, 0]]</pre> |
||
=={{header|FutureBasic}}== |
|||
FB has native XML validators. |
|||
<syntaxhighlight lang="futurebasic"> |
|||
include "NSLog.incl" |
|||
include "Tlbx XML.incl" |
|||
// Sample XML courtesy https://www.w3schools.com/xml/schema_example.asp |
|||
local fn Sample1XMLDocument as CFStringRef |
|||
CFStringRef xmlDoc = @"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n¬ |
|||
<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n¬ |
|||
<xs:element name=\"shiporder\">\n¬ |
|||
<xs:complexType>\n¬ |
|||
<xs:sequence>\n¬ |
|||
<xs:element name=\"orderperson\" type=\"xs:string\"/>\n¬ |
|||
<xs:element name=\"shipto\">\n¬ |
|||
<xs:complexType>\n¬ |
|||
<xs:sequence>\n¬ |
|||
<xs:element name=\"name\" type=\"xs:string\"/>\n¬ |
|||
<xs:element name=\"address\" type=\"xs:string\"/>\n¬ |
|||
<xs:element name=\"city\" type=\"xs:string\"/>\n¬ |
|||
<xs:element name=\"country\" type=\"xs:string\"/>\n¬ |
|||
</xs:sequence>\n¬ |
|||
</xs:complexType>\n¬ |
|||
</xs:element>\n¬ |
|||
<xs:element name=\"item\" maxOccurs=\"unbounded\">\n¬ |
|||
<xs:complexType>\n¬ |
|||
<xs:sequence>\n¬ |
|||
<xs:element name=\"title\" type=\"xs:string\"/>\n¬ |
|||
<xs:element name=\"note\" type=\"xs:string\" minOccurs=\"0\"/>\n¬ |
|||
<xs:element name=\"quantity\" type=\"xs:positiveInteger\"/>\n¬ |
|||
<xs:element name=\"price\" type=\"xs:decimal\"/>\n¬ |
|||
</xs:sequence>\n¬ |
|||
</xs:complexType>\n¬ |
|||
</xs:element>\n¬ |
|||
</xs:sequence>\n¬ |
|||
<xs:attribute name=\"orderid\" type=\"xs:string\" use=\"required\"/>\n¬ |
|||
</xs:complexType>\n¬ |
|||
</xs:element>\n¬ |
|||
</xs:schema>" |
|||
end fn = xmlDoc |
|||
local fn ValidateXML( string as CFStringRef ) as BOOL |
|||
ErrorRef err = NULL |
|||
XMLDocumentRef xmlDoc = fn XMLDocumentWithXMLString( string, NSXMLDocumentValidate + NSXMLNodePreserveAll, err ) |
|||
if err then NSLog( @"Error: %@", fn ErrorLocalizedDescription( err ) ) : exit fn |
|||
BOOL validXML = fn XMLDocumentValidate( xmlDoc, err ) |
|||
if err then NSLog( @"Error: %@", fn ErrorLocalizedDescription( err ) ) else exit fn = validXML |
|||
end fn = NO |
|||
CFStringRef xmlDoc, xmlName |
|||
BOOL success |
|||
xmlDoc = fn Sample1XMLDocument |
|||
success = fn ValidateXML( xmlDoc ) |
|||
xmlName = @"XML Sample No. 1 " |
|||
if success then NSLog( @"%@ XML document is valid.\n", xmlName ) else NSLog( @"%@ XML document is invalid.\n", xmlName ) |
|||
HandleEvents |
|||
</syntaxhighlight> |
|||
{{output}} |
|||
<pre> |
|||
XML Sample No. 1 XML document is valid. |
|||
</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |