Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Im folgenden Codeausschnitt wird veranschaulicht, wie Knoten mithilfe von XSD-Erweiterungsfunktionen anhand ihres XSD-Datentyps zurückgegeben werden. In diesem Beispielcode wird mithilfe der type-is-Funktion der erste string-Datentyp im Dokument zurückgegeben. Mit der type-local-name-Funktion wird eine Liste der Knoten des string-Datentyps zurückgegeben.
Mit dem Visual Basic-Code wird ein XMLSchemaCache50-Objekt erstellt. Außerdem werden dem Objekt die Deklaration für den Namespace-URI (urn:books) und das Schema (books.xsd) hinzugefügt. Anschließend wird mithilfe der schemas-Eigenschaft des DOMDocument-Objekts auf das Schema verwiesen. Beachten Sie, dass im Code die SelectionLanguage-Eigenschaft auf XPath und die SelectionNamespaces-Eigenschaft auf "xmlns:ms='urn:schemas-microsoft-com:xslt" festgelegt ist. Dies ermöglicht die Verwendung des ms:-Namespacepräfixes. Die Validierung wird durchgeführt, wenn die Datei books.xml in das DOMDocument-Objekt geladen wird. Validierungsfehler werden mithilfe der parseError-Eigenschaft des DOMDocument-Objekts zurückgegeben.
So wird das Beispiel ausgeführt
Kopieren Sie folgenden Code in die Prozedur Command1_Click. Anschließend sollte der Code so aussehen wie im unten dargestellten Codeausschnitt.
Klicken Sie auf der Symbolleiste von Visual Basic auf Start, und klicken Sie dann in form1 auf die Schaltfläche Command1.
Beim Ausführen des Beispiels gibt die Set objNodeList = xmldom.selectNodes "//*[ms:type-is('http://www.w3.org/2001/XMLSchema','string')]")-Anweisung eine Liste von Knoten des string-Datentyps zurück. Die For/Next-Schleife durchläuft die Knoten und zeigt den Text der einzelnen Knoten in einem Meldungsfeld an.
Private Sub Command1_Click()
Dim xmlschema As Msxml2.XMLSchemaCache50
Set xmlschema = New Msxml2.XMLSchemaCache50
Dim xmldom As Msxml2.DOMDocument50
Set xmldom = New Msxml2.DOMDocument50
Dim objElem As IXMLDOMNode
Dim objNodeList As IXMLDOMNodeList
xmlschema.Add "urn:books", App.Path & "\books.xsd"
Set xmldom.schemas = xmlschema
xmldom.setProperty "SelectionLanguage", "XPath"
xmldom.setProperty "SelectionNamespaces", "xmlns:ms='urn:schemas-microsoft-com:xslt'"
xmldom.async = False
xmldom.Load App.Path & "\books.xml"
'returns a list of nodes with the string data type
Set objNodeList = xmldom.selectNodes _
("//*[ms:type-is('http://www.w3.org/2001/XMLSchema','string')]")
For i = 0 To (objNodeList.length - 1)
MsgBox objNodeList.Item(i).Text
Next
If xmldom.parseError.errorCode <> 0 Then
MsgBox xmldom.parseError.errorCode & " " & xmldom.parseError.reason
Else
MsgBox "No Error"
End If
End Sub