none
publicación de una URI de un archivo XML RRS feed

  • Pregunta

  • Hola a todos, tengo una archivo XML llamado Empleados.xml al que quiere hacerle transformaciones XSL para que presente distintas páginas HTML con empleados  por departamento, por ciudad etc. y para ello necesito acceder a dicho archivo desde el interior del documento XSL y para ello quiero crear una URI tal como

    xmlns:emp = http:\\www.empresa\empleados

    para luego acceder alos empleados mediante emp:nombre  etc.

    pero mi duda es como hago que dicho fichero XML sea accesible a través de esa URI, ¿necesito publicar en IIS el archivo o algo así? o se hace de alguna otra forma, conocéis algún enlace que lo explique.

    un saludo

     
    domingo, 8 de abril de 2018 20:49

Todas las respuestas

  • Bueno, comencemos con el hecho de que se usa "/" y no "\" en los URL's.

    Seguido, el nombre de un xml namespace (xmlns) no es su ubicación.  Sí, tal vez los lectores XML hacen muchas veces esa suposición, pero el estándar define algo totalmente distinto:

    1. El nombre del namespace puede ser casi cualquier cosa.  Puede ser "perro", o "my_ns_0102", etc.
    2. La ubicación del XSD correspondiente al namespace se da mediante el atributo "xsi:schemaLocation" en la forma de pares cuyos elementos se separan por espacio, y por espacio también se separan los pares.

    Ejemplo:

    <?xml version="1.0"?>
    <raiz
        xmlns:emp="MisEmpDef"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:algoMas="MiOtraDef"
        xsi:schemaLocation="MisEmpDef http://www.misitio.com/xsd/MisEmpDef.xsd MiOtraDef http://www.misitio.com/xsd/MiOtraDef.xsd">
    >
        <emp:Empleado ...>
            ...
        </emp:Empleado>
        ...
    </raiz>

    Ahora que ya tenemos corregido su XML y su XSD, procedemos al XSLT.  Al XML le agregamos una línea de código después de la primera línea, justo antes del nodo raíz.

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="http://www.misitio.com/xslt/mitransformacion.xslt"?>
    ...

    Ahora ya puede servir el XML, inclusive como simple archivo de texto y el explorador web se encargará de descargar el XSLT y transformar el documento.


    Jose R. MCP
    Code Samples

    domingo, 8 de abril de 2018 23:31
    Moderador
  • Si pero no, efectivamente trabajo más con ficheros que con web por lo que pongo \ en vez de / gracias por la corrección, también se que las referencias con xmlns pueden ser cualquier cosa, pero mi problema es que he encontrado un archivo XLS que sin otra referencia que la establecida por la URI (sin parámetros de entrada) crea una función que se dedica directamente a descomponer el archivo empleados.xml lo que me hace pensar que aparte de poder utilizarse cualquier cosa como XMLNS, en algún caso  lo que se indica en una URI Http como la siguiente xmls:emp=http://www.empresa.com/empleados.xml debe ser funcional y poder a partir de esa referencia de la URI acceder al contenido del documento y esa es mi duda si a través de la URI se puede acceder al documento XML o hay que alojar el documento en IIS o crear un servicio WEB etc.

    pongo el código para que lo entendáis mejor, es un archivo XLS que utilizando dos URIs y mediante una función accede al registro de empleados y devuelve todos los Id de los mismos

    las URIs son

     xmlns:frt="http://www.olivinas.es/xsl/empleados"
     xmlns:rt="http://www.olivinas.es/configuracion/registro-Empleados"

    y la función

       <xsl:function name="frt:empleados-con-id" as="node()">
            <xsl:param name="idEmpleado" as="xs:string"/>
            <xsl:sequence select="$nodo-registro-empleados/rt:Empleado[@id = $idEmpleado]"/>
        </xsl:function>

    como veis no es tan sencillo como que una XSL genere otra Web, es algo más complicado, y repito mi duda que tengo que hacer para que a través de únicamente la  URI pueda acceder al contenido del XML

    un saludo

    lunes, 9 de abril de 2018 6:59