Sintaxis de ruta de acceso de elemento para datos de informe XML (SSRS)
En el Diseñador de informes, se define una ruta de acceso de elemento que distingue mayúsculas de minúsculas para especificar los datos que se van a utilizar en un informe desde un origen de datos XML. Una ruta de acceso de elemento indica cómo se deben recorrer los nodos jerárquicos XML y sus atributos en el origen de datos XML. Para utilizar la ruta de acceso de elemento predeterminada, mantenga vacía la consulta del conjunto de datos o el elemento XML ElementPath del elemento XML Query. Cuando se recuperan datos del origen de datos XML, los nodos de elemento que tienen valores de texto y atributos de nodo de elemento se convierten en columnas en el conjunto de resultados. Los valores de los nodos y atributos pasan a ser datos de fila al ejecutar la consulta. Las columnas aparecen como la colección de campos del conjunto de datos en el panel Datos de informe. En este tema se describe la sintaxis de la ruta de acceso de elemento.
[!NOTA]
La sintaxis de ruta de acceso de elemento es independiente del espacio de nombres. Para utilizar espacios de nombres en una ruta de acceso de elemento, se emplea la sintaxis de consulta XML que incluye un elemento XML ElementPath, tal como se describe en Sintaxis de consulta XML para los datos de informe XML (SSRS).
En la tabla siguiente se describen las convenciones que se aplican para definir una ruta de acceso de elemento.
Convención |
Se usa para |
---|---|
Negrita |
Texto que debe escribirse exactamente como se muestra. |
| (barra vertical) |
Separa los elementos de sintaxis. Solo se puede elegir uno de los elementos. |
[ ] (corchetes) |
Elementos opcionales de sintaxis. No escriba los corchetes. |
{ } (llaves) |
Delimita los parámetros de los elementos de sintaxis. |
[,...n] |
Indica que el elemento anterior puede repetirse n veces. Cada repetición se separa de la siguiente con una coma. |
Sintaxis
Element path ::=
ElementNode[/Element path]
ElementNode ::=
XMLName[(Encoding)][{[FieldList]}]
XMLName ::=
[NamespacePrefix:]XMLLocalName
Encoding ::=
HTMLEncoded | Base64Encoded
FieldList ::=
Field[,FieldList]
Field ::=
Attribute | Value | Element | ElementNode
Attribute ::=
@XMLName[(Type)]
Value ::=
@[(Type)]
Element ::=
XMLName[(Type)]
Type ::=
String | Integer | Boolean | Float | Decimal | Date | XML
NamespacePrefix ::=
Identifier that specifies the namespace.
XMLLocalName :: =
Identifier in the XML tag.
Comentarios
En la tabla siguiente se resumen los términos de ruta de acceso de elemento. Los ejemplos de la tabla hacen referencia al documento XML de ejemplo Customers.xml, que se incluye en la sección Ejemplos de este tema.
[!NOTA]
En las etiquetas XML se distingue entre mayúsculas y minúsculas. Cuando se especifica ElementNode en la ruta de acceso de elemento, debe haber una correspondencia exacta con las etiquetas XML del origen de datos.
Término |
Definición |
---|---|
Ruta de acceso de elemento |
Define la secuencia de nodos que deben recorrerse en el documento XML para recuperar los datos de campo de un conjunto de datos con un origen de datos XML. |
ElementNode |
Nodo XML en el documento XML. Los nodos se designan mediante etiquetas y existen en una relación jerárquica con otros nodos. Por ejemplo, <Customers> es el nodo de elemento raíz. <Customer> es un subelemento de <Customers>. |
XMLName |
Nombre del nodo. Por ejemplo, el nombre del nodo Customers es Customers. XMLName puede incluir delante un identificador de espacio de nombres para asignar un nombre único a cada nodo. |
Encoding |
Indica que Value para este elemento es XML codificado y debe descodificarse e incluirse como un subelemento de este elemento. |
FieldList |
Define el conjunto de elementos y atributos que se van a utilizar para recuperar datos. Si no se especifica, se usan como campos todos los atributos y subelementos. Si se especifica la lista de campos vacíos ({}), no se utilizará ningún campo de este nodo. FieldList no puede contener a la vez Value y Element o ElementNode. |
Field |
Especifica los datos que se recuperan como campo de conjunto de datos. |
Attribute |
Par de nombre y valor de ElementNode. Por ejemplo, en el nodo de elemento <Customer ID="1">, ID es un atributo y @ID(Integer) devuelve "1" como un tipo de entero en el campo de datos ID correspondiente. |
Value |
El valor del elemento. Value solo se puede usar en el último ElementNode de la ruta de acceso del elemento. Por ejemplo, dado que <Return> es un nodo hoja, si se incluye al final de una ruta de acceso de elemento, el valor de Return {@} es Chair. |
Element |
Valor del subelemento con nombre. Por ejemplo, Customers {}/Customer {}/LastName recupera valores únicamente para el elemento LastName. |
Type |
Tipo de datos opcional que se usa para el campo creado a partir de este elemento. |
NamespacePrefix |
NamespacePrefix se define en el elemento XML Query. Si no existe ningún elemento XML Query, se pasan por alto los espacios de nombres del elemento XML ElementPath. Si hay un elemento XML Query, el elemento XML ElementPath tiene un atributo IgnoreNamespaces opcional. Si IgnoreNamespaces es true, se pasan por alto los espacios de nombres en el elemento XML ElementPath y el documento XML. Para obtener más información, vea Sintaxis de consulta XML para los datos de informe XML (SSRS). |
Ejemplo: sin espacios de nombres
En los ejemplos siguientes se usa el documento XML Customers.xml. En esta tabla se muestran ejemplos de sintaxis de ruta de acceso de elemento y los resultados que se obtienen al utilizar la ruta de acceso de elemento en una consulta que define un conjunto de datos, basándose en el documento XML como origen de datos.
[!NOTA]
Cuando la ruta de acceso de elemento está vacía, la consulta utiliza la ruta de acceso de elemento predeterminada: la primera ruta de acceso a una colección de nodos hoja. En el primer ejemplo, dejar la ruta de acceso de elemento vacía equivale a especificar la ruta de acceso de elemento /Customers/Customer/Orders/Order. Todos los valores de nodo y atributos de la ruta se devuelven en el conjunto de resultados y los nombres de nodo y nombres de atributo aparecen como campos de conjunto de datos.
Ejemplo |
Campos en el conjunto de datos |
|||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Vacío |
|
|||||||||||||||||||||||||||||||||||
Customers {}/Customer |
|
|||||||||||||||||||||||||||||||||||
Customers {}/Customer {}/LastName |
|
|||||||||||||||||||||||||||||||||||
Customers {}/Customer {}/Orders/Order {@,@Qty} |
|
|||||||||||||||||||||||||||||||||||
Customers {}/Customer/Orders/Order{ @ID(Integer)} |
|
Documento XML: Customers.xml
Para probar los ejemplos de ruta de acceso de elemento de la sección anterior, puede copiar este XML, guardarlo en una dirección URL a la que tenga acceso el Diseñador de informes y, a continuación, usar el documento XML como origen de datos XML: por ejemplo, https://localhost/Customers.xml.
<?xml version="1.0"?>
<Customers xmlns="https://www.adventure-works.com">
<Customer ID="11">
<FirstName>Bobby</FirstName>
<LastName>Moore</LastName>
<Orders>
<Order ID="1" Qty="6">Chair</Order>
<Order ID="2" Qty="1">Table</Order>
</Orders>
<Returns>
<Return ID="1" Qty="2">Chair</Return>
</Returns>
</Customer>
<Customer ID="20">
<FirstName>Crystal</FirstName>
<LastName>Hu</LastName>
<Orders>
<Order ID="8" Qty="2">Sofa</Order>
</Orders>
<Returns/>
</Customer>
<Customer ID="33">
<FirstName>Wyatt</FirstName>
<LastName>Diaz</LastName>
<Orders>
<Order ID="15" Qty="2">EndTables</Order>
</Orders>
<Returns/>
</Customer>
</Customers>
O bien, puede crear un origen de datos XML que no tenga ninguna cadena de conexión e incrustar Customers.XML en la consulta mediante el procedimiento siguiente:
Para incrustar Customers.XML en una consulta
Cree un origen de datos XML con una cadena de conexión en blanco.
Cree un nuevo conjunto de datos para el origen de datos XML.
En el cuadro de diálogo Propiedades del conjunto de datos, haga clic en Diseñador de consultas. Se abre el cuadro de diálogo del diseñador de consultas basado en texto.
Escriba las dos líneas siguientes en el panel de consulta:
<Query>
<XmlData>
Copie Customers.XML y pegue el texto en el panel de consulta después de <XmlData>.
En el panel de consulta, elimine la primera línea que copió de Customers.XML: <?xml version="1.0"?>
Al final de la consulta, agregue las dos líneas siguientes:
<XmlData>
<Query>
Haga clic en Ejecutar consulta (!).
El conjunto de resultados muestra 4 líneas de datos con las columnas siguientes: xmlns, Customer.ID, FirstName, LastName, ID, Qty, Order.
Haga clic en Aceptar.
Vea también
Tasks
Agregar, editar y actualizar campos en el panel Datos de informe (Generador de informes y SSRS)