在XSLT转换中使用用于JSP的TLD

时间:2015-07-24 11:12:17

标签: xml jsp xslt

我正在努力更新XSLT转换,此更新的一部分涉及导入JSP中已有的一些功能。

提供给JSP的功能是通过一些自定义标记完成的,这些标记在TLD(http://java.sun.com/xml/ns/j2ee:taglib)XML文件中描述,而JSP文件在顶部包含一行:{{ 1}}

现在,这个XSLT需要从这个自定义标记库提供给JSP的一些常用功能。

我尝试在顶部插入一行:<%@ taglib uri="/WEB-INF/tlds/utilTags.tld" prefix="tags" %>,但这不起作用(我并没有真正期待它)。那么,如何将这些标签导入XSLT转换?

2 个答案:

答案 0 :(得分:1)

XSLT引擎可以解释和运行XSLT语法。

Taglibs具有不同的语法和完全不同的运行时环境。

理论上,(Java)XSLT引擎有可能将taglib集成为扩展,但我怀疑这已经完成。

TLDR:这是不可能的。

答案 1 :(得分:1)

XSLT本身不会解释JSP指令。相反,您可以执行以下操作之一:

  1. 首先运行JSP,然后使用XSLT,
  2. 匹配其输出
  3. 使用JSP transform指令在JSP中运行XSLT:
  4. <强>的hello.jsp

    <%@ page session = "false" %>
    <%@ taglib uri="oracle.jsp.parse.OpenJspRegisterLib" prefix="jml" %>
    
    <jml:transform href="hello.xsl" >
    
      <page>
        <title>Hello</title>
        <content>
          <paragraph>This is my first XML/XSL file!</paragraph>
        </content>
      </page>
    
    </jml:transform>
    

    <强> hello.xsl

    <?xml version="1.0"?>
    
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
      <xsl:template match="page">
        <html>
          <head>
            <title>
              <xsl:value-of select="title"/>
            </title>
          </head>
          <body bgcolor="#ffffff">
            <xsl:apply-templates/>
          </body>
        </html>
      </xsl:template>
    
      <xsl:template match="title">
        <h1 align="center">
          <xsl:apply-templates/>
        </h1>
      </xsl:template>
    
      <xsl:template match="paragraph">
        <p align="center">
          <i>
            <xsl:apply-templates/>
          </i>
        </p>
      </xsl:template>
    
    </xsl:stylesheet>
    

    生成此HTML:

    <root>
    <html>
    <head>
    <title>Hello</title>
    </head>
    <body bgcolor="#ffffff">
    <h1 align="center">Hello</h1>
    
    <p align="center"><i>This is my first XML/XSL file!</i></p>
    
    </body>
    </html>
    </root>