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

相关文章

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是