2010-08-13 11 views
6

Estoy usando aproximadamente una docena de archivos XSLT para proporcionar una gran cantidad de formatos de salida. En este momento, el usuario debe saber la extensión del formato de archivo que se está exportando, p. RTF, HTML, TXT.Administración de XSLT: adjuntar metadatos a una hoja de estilo para la salida y los parámetros

También me gustaría utilizar parámetros para permitir más opciones. Si puedo incrustar los metadatos en el archivo XSL, puedo recoger los detalles escaneando los archivos.

Esto es lo que estoy pensando. En este ejemplo, el programa debería analizar los comentarios de la información requerida.

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Title: Export to Rich Text Format --> 
<!-- Description: This Stylesheet converts to a Rich Text Format format which may be used in a word processor such as Word --> 
<!-- FileFormat: RTF --> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:param name="CompanyName"/> <!-- Format:String, Description: Company name to be inserted in the footer --> 
<xsl:param name="DateDue"/> <!-- Format:Date-yyyy-mm-dd, Description: Date Due --> 
<xsl:param name="IncludePicture">true</xsl:param><!-- Format:Boolean, Description: Do you want to include a graphical representation? --> 
    <xsl:template match="/"> 
    <!-- Stuff --> 
    </xsl:template> 
</xsl:stylesheet> 

¿Hay alguna norma por ahí? ¿Necesito eliminar más de uno (Dublin Core con un poco de XML Schema)?

P.S. el proyecto al que se está aplicando es Argumentative.

+0

Muy buena pregunta (+1). Ver mi respuesta para una solución Beter cómo representar metadatos en XSLT. –

Respuesta

6

Esto es lo que estoy pensando. En este ejemplo el programa tendría que analizar los comentarios para la información requerida.

Usted no necesidad de codificar los metadatos dentro de los comentarios.

Los metadatos se pueden especificar como parte de la hoja de estilo XSLT utilizando el marcado XML común, tan ricos en estructura y significado como necesitamos.

Aquí es un ejemplo de cómo hacerlo:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:meta="my:meta"> 
<xsl:output method="text"/> 

<meta:metadata> 
    <title>Title: Export to Rich Text Format </title> 
    <description> 
    This Stylesheet converts to a Rich Text 
    Format format which may be used in a word processor 
    such as Word 
    </description> 
    <fileFormat>RTF</fileFormat> 
    <parameters> 
    <parameter name="CompanyName" format="xs:string" 
     Description="Company name to be inserted in the footer"/> 

    <parameter name="DateDue" format="xs:date" 
     Description="Date Due"/> 

    <parameter name="IncludePicture" format="xs:boolean" 
     Description="Do you want to include a graphical representation?"/> 
    </parameters> 
</meta:metadata> 

<xsl:param name="CompanyName"/> 
<xsl:param name="DateDue"/> 
<xsl:param name="IncludePicture" select="true"/> 

<xsl:variable name="vMetadata" select= 
     "document('')/*/meta:metadata"/> 

<xsl:template match="/"> 
    This is a demo how we can access and use the metadats. 

    Metadata --> Description: 

    "<xsl:copy-of select="$vMetadata/description"/>" 
</xsl:template> 
</xsl:stylesheet> 

cuando se aplica esta transformación en cualquier documento XML (no se utiliza), el resultado es:

This is a demo how we can access and use the metadats. 

    Metadata --> Description: 

    " 
    This Stylesheet converts to a Rich Text 
    Format format which may be used in a word processor 
    such as Word 
    " 

Ten en cuenta:

  1. Cualquier elemento que esté en un espacio de nombres (por supuesto, no el espacio de nombres sin nombre y no el espacio de nombres xsl) puede especificarse en el nivel global de cualquier hoja de estilo xslt.

  2. Se puede acceder a dichos elementos utilizando la función xslt document().

+0

Una respuesta maravillosa. Me gustó especialmente el "documento introspectivo ('')/*/meta: metadata" Muchas gracias –

+0

@John_Hartley: En realidad, el código estaba mal formateado: he corregido el formato ahora. –

Cuestiones relacionadas