struts框架下,在jsp页面显示XSL格式化的XML。

2024-05-01 05:58

本文主要是介绍struts框架下,在jsp页面显示XSL格式化的XML。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

struts框架下,在jsp页面显示XSL格式化的XML。需要以下步骤:

1 页面显示前XMLDom对象和Xsl文件地址存入request

 

public class LoadDataAction extends Action {

            private Document mydata;

            private String xslPath;

 

            public ActionForward execute(ActionMapping mapping,

                                     ActionForm form,

                                     HttpServletRequest request,

                                     HttpServletResponse response)

            throws Exception{

                        mydata=loadData();

                        xslPath=”resources/example.xsl”;

                        //XMLDom对象

                        request.setAttribute("userXml",mydata);

                        //Xsl文件地址

                        request.setAttribute("bodyXsl",xslPath);

                        return mapping.findForward("success");

            }

            private Document loadData(){

                        Document result=null;

                        try{

                                    //创建XMLDom对象,XMLDTD下面给出

                        }catch(Exception e){

                                    e.printStackTrace();

                        }

                        return result;

            }

}

dtd文件内容

<?xml version="1.0" encoding="UTF-8"?>

<!--DTD generated by XMLSpy v2005 rel. 3 U (http://www.altova.com)-->

<!--the entity declarations may be overridden in the internal subset-->

<!--the declarations below should not be modified-->

<!--element name mappings-->

<!ENTITY % UsersBasicInfo "UsersBasicInfo">

<!ENTITY % UserBasicInfo "UserBasicInfo">

<!ENTITY % UserID "UserID">

<!ENTITY % Password "Password">

<!ENTITY % UserName "UserName">

<!ENTITY % Email "Email">

<!--element and attribute declarations-->

<!--Title: ubi.xsd

 

Subject: the user basic information.

                  Publisher: Nova Corporation, Colimas.

Format: text/xml

 

Creator: Zhao Lei

                 

Date.Created: 2005-04-26

                 

Language: en-US

                 

Description: User Basic Information Data Definition

                 

Change Log:

Version     Date                     Modifier   Description

 

01.00 2005/04/26       Zhao Lei     Initial release.                                                             

                  -->

<!ELEMENT %UsersBasicInfo; ((%UserBasicInfo;)*)>

<!--One User Basic Information-->

<!ELEMENT %UserBasicInfo; (%UserID;, (%Password;)?, %UserName;, %Email;)>

<!--The max Length of characters of it is 20-->

<!ELEMENT %UserID; (#PCDATA)>

<!--Show it only when user is administor. 12 fixed characters-->

<!ELEMENT %Password; (#PCDATA)>

<!ELEMENT %UserName; (#PCDATA)>

<!ELEMENT %Email; (#PCDATA)>

 

xsl文件内容

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<xsl:variable name="userinfo.comp" select="'Component Name'"/>

<xsl:variable name="userinfo.id" select="'Serial No'"/>

<xsl:variable name="userinfo.role" select="'Role Name'"/>

<xsl:variable name="userinfo.user" select="'User ID*'"/>

<xsl:variable name="userinfo.name" select="'User Name*'"/>

<xsl:variable name="userinfo.passord" select="'Password*'"/>

<xsl:variable name="userinfo.mail" select="'Email Address*'"/>

<xsl:variable name="userinfo.userp" select="'User Profile'"/>

<xsl:variable name="userinfo.required" select="'All items are required'"/>

<xsl:variable name="template.edit" select="'Edit!'"/>

<xsl:variable name="userinfo.access" select="'Access Role List'"/>

 

<xsl:template match="UserBasicInfo">

      <h1><xsl:value-of  select="$userinfo.userp"/></h1>

      <xsl:variable name="userid" select="UserID"/>

      <input type="button" name="edit" value="{$template.edit}"/>

      <p><font color="#003399" size="4"><xsl:value-of  select="$userinfo.required"/></font></p> 

      <table border="0" width="826" height="103" cellpadding="2" cellspacing="1">

     

                  <tr>

                              <td bgcolor="#E0F1FF"><xsl:value-of  select="$userinfo.user"/></td>

                              <td ><xsl:value-of select="$userid"/></td>

                  </tr>

                  <tr>

                              <td bgcolor="#E0F1FF"><xsl:value-of  select="$userinfo.passord"/></td>

                              <td><xsl:value-of select="Password"/></td>

                  </tr>

                  <tr>       

                              <td bgcolor="#E0F1FF"><xsl:value-of  select="$userinfo.name"/></td>

                              <td><xsl:value-of select="UserName"/></td>

                  </tr>

                  <tr>       

                              <td bgcolor="#E0F1FF"><xsl:value-of  select="$userinfo.mail"/></td>

                              <td><xsl:value-of select="Email"/></td>                                            

                  </tr>

      </table>

</xsl:template>

 

</xsl:stylesheet>

2 创建xsltag

tld文件内容如下:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<taglib>

      <tlibversion>1.0</tlibversion>

      <jspversion>1.1</jspversion>

      <shortname>colimas</shortname>

      <info>Contains xsl tag definitions used in colimas</info>

      <tag>

            <name>xsl</name>

            <tagclass>com.nova.colimas.common.tags.TagXSL</tagclass>

            <bodycontent>empty</bodycontent>

            <info>Gets XML DOM and XSL resource path from the HTTP request and uses these datas to generate and display HTML. The XSL resource path is localized according to the java.util.Locale that is found in the context. The different context are indicated by their scope : "application", "session", "request" or "page". The locale is optional ; if it is not supplied, the default Locale of the server is used.</info>

            <attribute>

                  <name>xslKey</name>

                  <required>true</required>

                  <rtexprvalue>false</rtexprvalue>

            </attribute>

            <attribute>

                  <name>xslScope</name>

                  <required>true</required>

                  <rtexprvalue>false</rtexprvalue>

            </attribute>

            <attribute>

                  <name>xmlKey</name>

                  <required>true</required>

                  <rtexprvalue>false</rtexprvalue>

            </attribute>

            <attribute>

                  <name>xmlScope</name>

                  <required>true</required>

                  <rtexprvalue>false</rtexprvalue>

            </attribute>

      </tag>

</taglib>

tagclass内容如下:

* Gets XML DOM and XSL resource path from the HTTP request and uses these

 * datas to generate and display HTML. The XSL resource path is localized

 * according to the java.util.Locale that is found in the context. The different

 * context are indicated by their scope : "application", "session", "request" or "page".

 * The locale is optional ; if it is not supplied, the default Locale of the server is used.

 * @author tyrone

 */

public class TagXSL extends TagSupport

{

            /**

                        * Key for the XMLObject in its context, xmlKey

                        */

            protected String xmlKey;

            /**

                        * Scope for the XMLObject, xmlScope

                        */

            protected int xmlScope;

            /**

                        * Key for the XSL resource path, xslKey

                        */

            protected String xslKey;

            /**

                        * Scope for the XSL resource path, xslScope

                        */

            protected int xslScope;

            /**

             * Executes the Tag. It gets XML and XSL information, then generates the HTML before write it.

             */

            public int doStartTag() throws JspException

            {

                        String xslPath = null;

                        long start = System.currentTimeMillis();

                        try

                        {

                                    // Gets the XML Object from the context

                                    Document xmlObject = (Document) pageContext.getRequest().getAttribute(xmlKey);

                                    if (xmlObject == null)

                                                throw new JspTagException("Cannot retrieve the XMLObject in scope " + xmlScope + " under the key " + xmlKey);

                                    // Gets the XSL resource path from the context

                                    xslPath = (String) pageContext.getRequest().getAttribute(xslKey);

                                    if (xslPath == null)

                                                throw new JspTagException("Cannot retrieve the XSL path in scope " + xslScope + " under the key " + xslKey);

                                    // Try to get the Locale from the context

                                    Locale locale = (Locale) pageContext.getAttribute(Globals.LOCALE_KEY, PageContext.SESSION_SCOPE);

 

                                    // Right. We have all needed elements.

                                    try

                                    {

                                                // Do the transformation

                                                XSLTransform.transform(xmlObject, xslPath, locale, pageContext.getOut());

                                                // All is done, continue to execute the JSP

                                                return EVAL_PAGE;

                                    }

                                    catch (Exception ex)

                                    {

                                                //Console.error (this, "Cannot transform XML", ex);

                                                throw new JspTagException(ex.getMessage());

                                    }

                        }

                        finally

                        {

                                    long end = System.currentTimeMillis();

                                    System.out.println("Time for TagXSL (" + xslPath + ") : " + (end - start) + " ms");

                                    //Console.verbose(this, "Time for TagXSL (" + xslPath + ") : " + (end - start) + " ms");

                        }

            }

}

3 XSLTransform的实现

/**

 * Transform XML with XSL file to show in web page

 * @author tyrone

 *

 */

public class XSLTransform {

            /**

             * Internal factory

             */

            private static TransformerFactory transformerFactory;

            static

            {

                        transformerFactory = TransformerFactory.newInstance();

            }

            /**

             * Method to transform an XMLObject into an XHTML string

             * by using an XSL stylesheet.

             *

             * The result of the transformation is given to the Writer given as a parameter.

             * @param xo The XMLObject to transform

             * @param xslResourcePath The absolute resource path to the XSL file, without any

             * country information.

             * @param locale The information about localization of the XSL file

             * @param output Output for the transformation.

             * @see XSLServer

             */

            public static void transform(Document xo, String xslResourcePath, Locale locale, Writer output) throws IOException, ParserConfigurationException, SAXException, TransformerException, TransformerConfigurationException, CLMSException

            {

                        // Get the XMLObject DOM

                        Document xmlDom = xo

                        // Get the XSL DOM,本文忽略如何得到XSLDocument

                        Document xslDom = XSLServer.getXSL(xslResourcePath, locale);

                        transformAsString(xmlDom, xslDom, output);

            }

 

            /**

             * Transforms the <code>xml</code> in a XML string

             * to the <code>xsl</code> XSLT stylesheet.

             *

             * The output of the transformation is put into the given Writer.

             * @param xml The XML DOM

             * @param xsl The XSL DOM

             * @param output Output for the transformation.

             */

            public static void transformAsString(Document xml, Document xsl, Writer output) throws IOException, SAXException, TransformerException, TransformerConfigurationException

            {

                        // XSL source

                        DOMSource xslSource = new DOMSource(xsl);

                        // Transformer

                        Transformer transformer = transformerFactory.newTransformer(xslSource);

                        // Prepare the result

                        StreamResult result = new StreamResult(output);

                        // Process

                        transformer.transform(new DOMSource(xml), result);

                       

            }         

}

结果如下:

这篇关于struts框架下,在jsp页面显示XSL格式化的XML。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/950866

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

intellij idea generatorConfig.xml

generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-ge

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟