Compartir a través de


El código de función de extensión de XSD de Visual Basic

El siguiente miniprograma de código muestra cómo utilizar las funciones de extensión para devolver nodos basados en su tipo de datos XSD. Este código de ejemplo utiliza la función type-is para devolver el primer tipo de datos de cadena en el documento y la función type-local-name para devolver una lista de nodos del tipo de datos de cadena.

El código de Visual Basic crea un objetoXMLSchemaCache50, añade una declaración URI de espacio de nombresurn:books) y el esquemabooks.xsd) al objeto y, a continuación, hace referencia al esquema utilizando la propiedad schemas del objeto DOMDocument. Tenga en cuenta en el código que la propiedad SelectionLanguage se establece en XPath y que la propiedad SelectionNamespaces se establece en "xmlns:ms='urn:schemas-microsoft-com:xslt" permitiendo utilizar el prefijo de espacio de nombres ms:. La validación se lleva a cabo cuando el archivo books.xml se carga en el objeto DOMDocument. Los errores de validación se devuelven mediante la propiedad parseError del objeto DOMDocument.

Para ejecutar el ejemplo

  1. Copie el código que se muestra a continuación en el procedimiento Comand1_Click. Debería parecerse al código en el miniprograma de código cuando haya finalizado.

  2. En la barra de herramientas de Visual Basic, haga clic en Inicio y, a continuación, en el botón Command1 en form1.

Cuando ejecuta el ejemplo, la instrucción Set objNodeList = xmldom.selectNodes "//*[ms:type-is('http://www.w3.org/2001/XMLSchema','string')]") devuelve una lista de nodos de cadena de tipos de datos. El bucle For/Next realiza una interacción a través de los nodos y muestra el texto de cada nodo en un cuadro de mensaje.

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