Pregunta

Tengo una aplicación que almacena la base de datos de usuario en un archivo XML y necesito para exportar campos seleccionados a Filemaker por lo que mi cliente y mina de los datos en FileMaker. Me las arreglé para hacer el archivo XSLT para importar elementos XML, pero parece que no puede encontrar una manera de importar los elementos. Punteros en la solución de este problema se prevén en gran medida.

Ejemplo del archivo XML:

<?xml version="1.0" encoding="utf-8"?>
<APPLICATION_NAME>
  <USERS>
    <USER>
      <ID>15001</ID>
      <USERNAME>Administrator</USERNAME>
      <!-- other elements -->
      <PROPERTYBAG>
        <ITEM NAME="LastModifiedDate" VALUE="Fri, 05 Sep 2008 13:13:16 GMT"/>
        <ITEM NAME="Registered" VALUE="5.9.2008 16:13:16"/>
        <!-- other elements -->
      </PROPERTYBAG>
    </USER>
    <!-- more users -->
  </USERS>
</APPLICATION_NAME>

Hasta ahora me las he arreglado para importar elementos siguiendo la instrucción de este sitio: http : //edoshin.skeletonkey.com/2005/10/use_modular_xsl.html

Y aquí está el XSLT que importa esos elementos, pero no atributos:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns="http://www.filemaker.com/fmpxmlresult">

<xsl:include href="FileMaker.xslt"/>

<xsl:template match="/">
  <xsl:call-template name="TABLE">
    <xsl:with-param name="METADATA-FIELDS">
      <xsl:call-template name="FIELD">
        <xsl:with-param name="NAME" select="'ID'"/>
      </xsl:call-template>
      <xsl:call-template name="FIELD">
        <xsl:with-param name="NAME" select="'USERNAME'"/>
      </xsl:call-template>
      <xsl:call-template name="FIELD">
        <xsl:with-param name="NAME" select="'ISADMINISTRATOR'"/>
      </xsl:call-template>
      <xsl:call-template name="FIELD">
        <xsl:with-param name="NAME" select="'LastModifiedDate'"/>
      </xsl:call-template>
      <xsl:call-template name="FIELD">
        <xsl:with-param name="NAME" select="'Registered'"/>
      </xsl:call-template>
    </xsl:with-param>

    <xsl:with-param name="RESULTSET-RECORDS">
      <xsl:for-each select="//USER">
        <xsl:call-template name="ROW">
          <xsl:with-param name="COLS">
            <xsl:call-template name="COL">
              <xsl:with-param name="DATA" select="ID"/>
            </xsl:call-template>
            <xsl:call-template name="COL">
              <xsl:with-param name="DATA" select="USERNAME"/>
            </xsl:call-template>
            <xsl:call-template name="COL">
              <xsl:with-param name="DATA" select="ACCOUNT/ISADMINISTRATOR"/>
            </xsl:call-template>

                <xsl:call-template name="COL">
              <xsl:with-param name="DATA" select="@Registered"/>
            </xsl:call-template>

                </xsl:with-param>
        </xsl:call-template>
      </xsl:for-each>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

</xsl:stylesheet>
¿Fue útil?

Solución

Tengo que decir que no estoy seguro de haber entendido lo que necesita aquí.
Si yo he entendido - que no está recibiendo el valor de

<ITEM NAME="LastModifiedDate" VALUE="Fri, 05 Sep 2008 13:13:16 GMT"/>

usando

<xsl:call-template name="COL">
      <xsl:with-param name="DATA" select="@Registered"/>
</xsl:call-template>


Editar
Si este es el caso, entonces trate de usar ARTÍCULO / @ registrada de esta manera:

<xsl:call-template name="COL">
    <xsl:with-param name="DATA" select="PROPERTYBAG/ITEM[@NAME='Registered']/@VALUE"/>
</xsl:call-template>

desea que el atributo de valor del elemento ARTÍCULO con atributo de nombre es igual a registro con arreglo al elemento de PropertyBag que está debajo de cada usuario ...


Original:
Si este es el caso, entonces trate de usar ARTÍCULO / @ registrada de esta manera:

<xsl:call-template name="COL">
     <xsl:with-param name="DATA" select="ITEM/@Registered"/>
</xsl:call-template>

desea que el elemento que está debajo de cada usuario ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top