XSLT管理 - 将元数据附加到样式表以获取输出和参数

时间:2010-08-13 02:51:22

标签: xslt

我正在使用大约十几个XSLT文件来提供大量输出格式。目前,用户必须知道要导出到的文件格式的扩展名。 RTF,HTML,TXT。

我还想使用参数来提供更多选项。如果我可以将元数据嵌入到XSL文件中,那么我可以通过扫描文件来获取详细信息。

这是我在想的。在此示例中,程序必须解析所需信息的注释。

<?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>

那里有标准吗?我是否需要屠宰多个(都柏林核心和一些XML Schema)?

P.S。正在应用的项目是Argumentative

1 个答案:

答案 0 :(得分:6)

  

这是我在想的。在   这个例子是程序必须的   解析所需的注释   信息。

需要在评论中对元数据进行编码。

可以使用普通的XML标记将元数据指定为XSLT样式表的一部分 - 因为我们需要的结构和含义丰富

以下是如何执行此操作的示例:

<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>

当此转换应用于任何XML文档(未使用)时,结果为

  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
   "

请注意

  1. 可以在任何xslt样式表的全局级别指定名称空间中的任何元素(当然不是无命名空间而不是xsl名称空间)。

  2. 可以使用xslt函数document()访问此类元素。