Книга: XSLT

Вызов Java непосредственно из процессоров XSLT

Вызов Java непосредственно из процессоров XSLT

Как мы говорили в главе 5, до недавнего времени процессоры XSLT могли реализовывать функции расширения любым способом, и один из этих способов включал прямой вызов функций Java. Например, в Saxon и Xalan можно выполнять код Java, если определить пространство имен, указывающее класс Java как последнюю часть своего URI — как в следующем примере, где я определил пространство имен Date, соответствующее классу Java Date:

<?xml version="1.0"?>
<xsl:stylesheet version="1.1"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:Date="http://www.saxon.com/java/java.util.Date">
 .
 .
 .

Как вы видели в главе 5, это означает, что теперь вы можете применять такие функции Java, как toString и new, для встраивания текущей даты в заголовок HTML <Н1>, — например, так (листинг 10.6).

Листинг 10.6. Работа с функциями класса Date Java

<?xml version="1.0"?>
<xsl:stylesheet version="1.1"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:Date="http://www.saxon.com/java/java.util.Date">
 <xsl:template match="/PLANETS">
  <HTML>
   <HEAD>
    <TITLE>
     The Planets Table
    </TITLE>
   </HEAD>
   <BODY>
    <H1>
     The Planets Table
    </H1>
    <BR/>
    <H1>
     <xsl:value-of select="Date:toString(Date:new())"/>
    </H1>
    <TABLE BORDER="2">
     <TD>Name</TD>
     <TD>Mass</TD>
     <TD>Radius</TD>
     <TD>Day</TD>
     <xsl:apply-templates/>
    </TABLE>
   </BODY>
  </HTML>
 </xsl:template>
 <xsl:template match="PLANET">
  <TR>
   <TD><xsl:value-of select="NAME"/></TD>
   <TD><xsl:apply-templates select="MASS"/></TD>
   <TD><xsl:apply-templates select="RADIUS"/></TD>
   <TD><xsl:applу-templates select="DAY"/></TD>
  </TR>
 </xsl:template>
 <xsl:template match="MASS">
  <xsl:value-of select="."/>
 </xsl:template>
 <xsl:template match="RADIUS">
  <xsl:value-of select="."/>
 </xsl:template>
 <xsl:template match="DAY">
  <xsl:value-of select="."/>
 </xsl:template>
</xsl:stylesheet>

Такой код, безусловно, работает, но дает лишь ограниченные средства работы и зависит от нестандартных расширений. За исключением случая, когда вы осуществляете только несколько простых вызовов, обычно лучше начать работать в Java и взаимодействовать с процессором XSLT.

Каждый из процессоров XSLT Xalan, Saxon, XT и Oracle определяет API, к которому можно обращаться из Java. Достаточно только проверить, что нужные файлы JAR находятся в classpath Java. Мы уже рассматривали, как работать с файлами JAR и путями к классам, в главе 1; теперь мы перейдем к написанию кода на Java, а не просто выполнению предопределенных классов из командной строки. Код можно загрузить с http://www.newriders.com/books/title.cfm?isbn=0735711364, поэтому если вы не программист на Java, можете пропустить эту часть главы.

Оглавление книги


Генерация: 1.185. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз