FeaturesPluginsDocs & SupportCommunityPartners

XSLT 设计器快速入门指南

概述

本教程帮助您熟悉 NetBeans IDE 6.0 中的 XSLT Designer。XSLT 设计器用于开发、部署、测试 XSL Transformation 服务。

XSL Transformation 服务是一个 web 服务。它接收外部客户端的消息,并根据 XSL 样式表转换该消息,然后将其发回原处或者转发给其他 web 服务。

本教程中将创建一个简单的 XSL Transformation 服务,可接收消息、转换消息,然后将消息发回调用 web 服务。

前提条件

本文假定您拥有 NetBeans IDE 的基本知识或者具备相关编程经验。

系统要求

本教程假定您的系统满足 NetBeans 6.0 发行说明系统要求 部分所指定的要求。

本教程所需的软件

开始之前,需要在您的计算机中下载并安装以下软件:NetBeans IDE 6.0。选择 Download All 选项。Download All 选项包括 SOA Pack 和 GlassFish V2 应用服务器,它们都是本教程所必需的。

回到顶部

配置教程环境

本教程需要与 NetBeans IDE 6.0 一起安装的 GlassFish V2 应用服务器,它包括 JBI 运行时。执行以下步骤确定与 NetBeans IDE 6.0 一起安装了 GlassFish V2 应用服务器,并且 JBI 运行时包含此教程所需的 XSLT Service Engine 和 Transform Shared Library:

  1. 打开服务窗口。
  2. 展开 Servers 节点。
  3. 右键单击 GlassFish V2 节点,然后从弹出菜单中选择“启动”。

    如果“启动”选项不可用,并且 GlassFish V2 节点旁边有一个绿色的“标志”,则服务器已经在运行。

    应用服务器正在运行

  4. 启动服务器后,展开 GlassFish V2 > JBI 节点。然后展开 Service Engines 节点和 Shared Libraries 节点验证安装了 XSLT Service Engine 和 Transform Shared Library。

    应用服务器正在运行

回到顶部

创建 XSLT 模块项目

在 XSLT 模块项目中创建 XSL Transformation 服务。

要创建新的 XSLT 模块项目:

  1. 从 IDE 的主菜单中,选择“文件”>“新建项目”。
  2. 在“类别”中选择 SOA
  3. 在“项目”下面,选择 XSLT Module
  4. 单击“下一步”。

    新 XSLT 模块项目

  5. 在“项目名称”字段中,键入 HelloXSLTransformation
  6. 修改项目位置或者接受默认值。

    新的项目名称和位置

  7. 单击“完成”。
  8. 现在,“项目”窗口会包含一个 HelloXSLTransformation 项目节点。

    项目窗口中的 HelloXSLTransformation。

接下来,创建两个 XML 模式 (.xsd) 文件,一个 web 服务描述 (.wsdl) 文件和一个 XSL 样式表 (.xsl) 文件。要运行 XSL Transformation 服务,您至少需要一个 XML 模式,一个 WSDL 文件和一个 XSL 样式表。为了学习本教程,您应该创建两个 XML 模式。

回到顶部

创建 XML 模式

您将创建两个 XML 模式:HelloXSLTIncoming.xsdHelloXSLTOutgoing.xsd。第一个可以用作传入消息的基础,第二个用作传出消息的基础。

要为传入消息创建 XML 模式:

  1. 在项目窗口中,右键单击 HelloXSLTransformation > Transformation Files 节点并选择“新建”>“XML Schema”。
  2. 在“文件名”字段中,输入 HelloXSLTIncoming
  3. 单击“完成”。一个新节点(HelloXSLTIncoming.xsd)将出现在 HelloXSLTransformation 项目的 Transformation Files 节点下,然后在 XML 模式编辑器中打开新的模式。

    将 XML 模式添加到项目

  4. 在模式视图的第一列右键单击“元素”并从弹出菜单中选择“添加元素”。将打开“添加用户”对话框。
  5. 在“名称”字段中,输入 name
  6. 在“类型”下选择“使用现有类型”单选按钮。
  7. 展开 Built-in Types 节点并选择 string
  8. 单击“确定”。

    新建模式元素对话框

  9. 要查看您创建的模式的源代码,单击 XML 模式编辑器工具栏上的“源代码”按钮。您应该看到以下代码:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://xml.netbeans.org/schema/HelloXSLTIncoming"
    xmlns:tns="http://xml.netbeans.org/schema/HelloXSLTIncoming"
    elementFormDefault="qualified">
    <xsd:element name="name" type="xsd:string"></xsd:element>
    </xsd:schema>

要为传出消息创建 XML 模式:

  1. 在项目窗口中,右键单击 HelloXSLTransformation > Transformation Files 节点并选择“新建”>“XML Schema”。
  2. 在“文件名”字段中,输入 HelloXSLTOutgoing
  3. 单击“完成”。一个新节点(HelloXSLTOutgoing.xsd)将出现在 HelloXSLTransformation 项目的 Transformation Files 节点下,然后在 XML 模式编辑器中打开新的模式。
  4. 在模式视图的第一列右键单击“元素”并从弹出菜单中选择“添加元素”。将打开元素对话框。
  5. 在“名称”字段中,输入 greeting
  6. 在“类型”下选择“使用现有类型”单选按钮。
  7. 展开 Built-in Types 节点并选择 string
  8. 单击“确定”。
  9. 要查看您创建的模式的源代码,单击 XML 模式编辑器工具栏上的“源代码”按钮。您应该看到以下代码:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://xml.netbeans.org/schema/HelloXSLTOutgoing"
    xmlns:tns="http://xml.netbeans.org/schema/HelloXSLTOutgoing"
    elementFormDefault="qualified">
    <xsd:element name="greeting" type="xsd:string"></xsd:element>
    </xsd:schema>
  10. 单击工具栏中的“保存全部”按钮。

您应该在 HelloXSLTransformation 项目的 Transformation Files 节点下看到两个模式文件。

项目中的两个模式文件

注意:XML 模式编辑器不是本文要讨论的主题。有关 XML 模式编辑器的详细内容,请参见 XML 模式工具入门

回到顶部

创建 WSDL 文件

接下来创建一个 web 服务描述文件,定义我们 XSL Transformation 服务的 web 接口。

要创建 WSDL 文件:

  1. 在项目窗口中,右键单击 HelloXSLTransformation > Transformation Files 节点并选择“新建”>“WSDL 文档”。
  2. 在“文件名”字段中,输入 HelloXSLTWSDL,然后单击“下一步”。
  3. 在“元素或类型”列“输入”中,单击 ellipsis (...) 按钮。此时将打开“选择元素或类型”对话框。
  4. 选择“根据文件” > HelloXSLTransformation > src/HelloXSLTIncoming.xsd >“元素”>“名称”,然后单击“确定”。

    选择名称元素

  5. 在“元素或类型”列“输出”中,单击 ellipsis (...) 按钮。此时将打开“选择元素或类型”对话框。
  6. 选择“根据文件” > HelloXSLTransformation > src/HelloXSLTOutgoing.xsd >“元素”>“欢迎”,然后单击“确定”。

    选择欢迎元素

  7. 单击“下一步”。
  8. 在“绑定类型字段”中,选择 SOAP。
  9. 在“绑定子类型”下,选择“文档字面值”,然后单击“完成”。

您应该在 HelloXSLTransformation 项目的 Transformation Files 节点下看到 HelloXSLTWSDL.wsdl 文件。

在项目窗口中浏览 WSDL 文件

注意:创建和编辑 WSDL 文件不是本文要讨论的主题。有关详细信息,请参见 WSDL 编辑器开发人员指南

回到顶部

创建 XSL 样式表

XSL 样式表是一个 XML 文件,它包含将输入消息转变为输出消息的指令。

要创建 XSL 样式表:

  1. 在项目窗口中,右键单击 HelloXSLTransformation > Transformation Files 节点并选择“新建”>“XSLT 服务”。
  2. 在“服务类型”下,选择“请求-应答服务”。单击“下一步”。
  3. 注意,在“Web 服务”下拉列表中选择了 HelloXSLTWSDL.wsdl。单击“下一步”。
  4. 在“XSL 文件”字段中,输入 HelloXSLTService。单击“完成”。

    HelloXSLTransformation 项目的 Transformation Files 节点下应该出现了 HelloXSLTService.xsl 节点。HelloXSLTService.xsl 文件以 XSL Transformation 编辑器的设计视图打开。设计视图 Palette 在右边打开。

    XSL Transformation 编辑器
    单击查看大图

  5. 在 Palette 中,展开 String 部分并将 concat 函数拖到 XSLT 设计视图 Transformations 面板。

    Concat 函数

  6. 在 Palette 中,选择 String 部分中的 string-literal 函数并将其拖到 Transformations 面板。右键单击返回字符串字段以使之可编辑,并输入 Hello (末尾有个空格)。
  7. 拖动 Hello 字段右边的句柄拖动到 Concat 函数 string1 行的左边。出现一个箭头指示方向。

    连接 String-Literal 和 Concat

  8. 在左边的“源代码”面板中选择 name 元素,并将句柄拖动到 Concat 函数 string2 行的句柄。
  9. 将返回字符串句柄拖动到右边“目标”树的 greeting 元素。现在设计视图应该如下图所示:

    最终映射

  10. 单击“设计”视图工具栏上的“源代码”按钮。您应该看到以下内容:
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:ns1="http://xml.netbeans.org/schema/HelloXSLTIncoming" xmlns:ns="http://xml.netbeans.org/schema/HelloXSLTOutgoing">
    <xsl:template match="/">
    <xsl:element name="ns:greeting">
    <xsl:value-of select="concat('Hello ', /ns1:name)"/>
    </xsl:element>
    </xsl:template>
    </xsl:stylesheet>
  11. 单击工具栏中的“保存全部”按钮。

回到顶部

创建并部署复合应用程序项目

不能直接部署 XSLT 项目。您必须先将 XSLT 项目作为 JBI 模块添加到复合应用程序项目中之后才能部署复合应用程序。部署项目将使应用服务器可以使用服务组装功能,从而允许服务单元运行。

创建复合应用程序:

  1. 从主菜单选择“文件”>“新建项目”选项。
  2. 在“类别”中选择 SOA
  3. 在“项目”下,选择 Composite Application。单击“下一步”。
  4. 在“项目名称”字段中键入 HelloXSLTCAP
  5. 指定项目位置或者接受默认值。
  6. 单击“完成”。
  7. 现在,项目窗口会包含一个 HelloXSLTCAP 项目节点。

    添加到项目窗口的复合应用程序项目

添加 JBI 模块:

  1. 右键单击 HelloXSLTCAP 节点,然后从弹出菜单中选择“添加 JBI 模块”。
  2. 选择 HelloXSLTransformation 项目然后单击“添加项目 Jar 文件”。

    添加 JBI 模块

  3. 要验证添加了 JBI 模块,展开 HelloXSLTCAP > JBI Modules

    添加的 JBI 模块

部署 HelloXSLTCAP 复合应用程序

  1. 在项目窗口中,右键单击 HelloXSLTCAP 节点,然后从弹出菜单中选择“部署项目”。
    注意: 如果出现“警告 - 选择服务器”对话框,则选择 Sun Java System Application Server 9 并单击“确定”。
  2. 在 IDE 底部打开的输出窗口中,查看 BUILD SUCCESSFUL 消息。
  3. 要验证已经部署了项目,展开运行时窗口的 Sun Java System Application Server 9 > JBI > Service Assemblies。应该能够看到 HelloXSLTCAP 节点。

    服务组装

回到顶部


测试 XSL Transformation 服务过程的运行

测试 XSL Transformation 服务即发送一个服务所需的消息,并(本例)接收回复消息。

执行测试前我们必须创建测试用例。

创建测试用例:

  1. 在“项目”窗口中,展开 HelloXSLTCAP 节点,然后右键单击测试节点。
  2. 从弹出菜单中选择“新建测试用例”。
  3. 在“测试用例”字段中,键入 JohnSmith。单击“下一步”。
  4. 在“选择 WSDL 文档”下,展开 HelloXSLTransformation - XSLT Process Files 并选择 HelloXSLTWSDL.wsdl。单击“下一步”。
  5. 在“选择要测试的操作”下,展开 HelloXSLTWSDLBinding 并选择 HelloXSLTWSDLOperation。单击“完成”。
  6. JohnSmith 节点出现在 HelloXSLTCAP > Test 下,输入消息文件(Input.xml)在编辑器中打开。

    输入消息

  7. Input.xml 中,将
     <hel:name>?string?</hel:name>
                    
    行修改为
     <hel:name>John Smith</hel:name>
                    
    Input.xml 文件应该:
     <soapenv:Envelope xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://xml.netbeans.org/schema/HelloXSLTIncoming">
    <soapenv:Body>
    <hel:name>John Smith</hel:name>
    </soapenv:Body>
    </soapenv:Envelope>
                    
  8. 单击工具栏中的“保存全部”按钮。

测试用例节点下的 Output 节点引用所需的回复消息,用来与实际回复消息进行比较。在第一次运行测试前,Output.xml 文件是空的。我们将用回复消息作为其内容填写(假设我们需要这样做)。

运行测试:

  1. 右键单击 JohnSmith 节点并选择“运行”。注意,测试将失败并出现以下对话框:

    覆盖对话框

  2. 单击“确定”。注意,失败的测试节点出现在 Output 节点下。

    失败的测试节点

  3. 右键单击失败的测试节点,查看 XSL Transformation 服务发回的消息:
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://xml.netbeans.org/schema/HelloXSLTOutgoing">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
    <ns:greeting xmlns:ns="http://xml.netbeans.org/schema/HelloXSLTOutgoing">Hello John Smith</ns:greeting>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    注意行
     <ns:greeting xmlns:ns="http://xml.netbeans.org/schema/HelloXSLTOutgoing">Hello John Smith</ns:greeting>
                    
    XSL Transformation 服务接收名称,并将与字符串 'Hello' 相连接,然后发送回复消息。
  4. 再次运行项目。测试被标记为通过。

    测试通过

祝贺您!您已经成功地创建、部署和测试了 XSL Transformation 服务。

回到顶部

未来计划

现在您已经成功创建了 Request-Reply XSL Transformation 服务,请继续 Service Bridge 类型。



回到顶部

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Open ESB - The Open Enterprise Service Bus Powered by