XML validation: Difference between revisions

Initial FutureBasic task solution added
(Initial FutureBasic task solution added)
Line 187:
</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}}==
719

edits