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

相关文章

SpringBoot全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

C#实现将XML数据自动化地写入Excel文件

《C#实现将XML数据自动化地写入Excel文件》在现代企业级应用中,数据处理与报表生成是核心环节,本文将深入探讨如何利用C#和一款优秀的库,将XML数据自动化地写入Excel文件,有需要的小伙伴可以... 目录理解XML数据结构与Excel的对应关系引入高效工具:使用Spire.XLS for .NETC

springboot中配置logback-spring.xml的方法

《springboot中配置logback-spring.xml的方法》文章介绍了如何在SpringBoot项目中配置logback-spring.xml文件来进行日志管理,包括如何定义日志输出方式、... 目录一、在src/main/resources目录下,也就是在classpath路径下创建logba

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

Python结合Free Spire.PDF for Python实现PDF页面旋转

《Python结合FreeSpire.PDFforPython实现PDF页面旋转》在日常办公或文档处理中,我们经常会遇到PDF页面方向错误的问题,本文将分享如何用Python结合FreeSpir... 目录基础实现:单页PDF精准旋转完整代码代码解析进阶操作:覆盖多场景旋转需求1. 旋转指定角度(90/27

使用Python实现在PDF中添加、导入、复制、移动与删除页面

《使用Python实现在PDF中添加、导入、复制、移动与删除页面》在日常办公和自动化任务中,我们经常需要对PDF文件进行页面级的编辑,使用Python,你可以轻松实现这些操作,而无需依赖AdobeAc... 目录1. 向 PDF 添加空白页2. 从另一个 PDF 导入页面3. 删除 PDF 中的页面4. 在

VS Code中的Python代码格式化插件示例讲解

《VSCode中的Python代码格式化插件示例讲解》在Java开发过程中,代码的规范性和可读性至关重要,一个团队中如果每个开发者的代码风格各异,会给代码的维护、审查和协作带来极大的困难,这篇文章主... 目录前言如何安装与配置使用建议与技巧如何选择总结前言在 VS Code 中,有几款非常出色的 pyt

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页