`

xml和xsl生成html页面

阅读更多
用xsl解析xml文件,遍历xml一个节点下的子节点,根据子节点的属性输出文本框或者是下拉框,或者是button。可以下载附件,双击xml即可看到效果

1。xsl文件的内容如下

<?xml version="1.0" encoding="utf-8"?>  
<xsl:stylesheet version="1.0"  
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"
>
<!-- 定义一个template,生成文本框,根据xml设置文本框的id,name,click方法等,代码如下 -->
<xsl:template name="input">
<xsl:choose>
<xsl:when test="enable">
<xsl:if test="enable!='hidden'">
<xsl:if test="description">
<span class="name"><xsl:value-of select="description" />:</span>
</xsl:if>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:if test="description">
<span class="name"><xsl:value-of select="description" />:</span>
</xsl:if>
</xsl:otherwise>
</xsl:choose>

    <xsl:element name="input">
    <xsl:attribute name="id"><xsl:value-of select="@name" /></xsl:attribute>
    <xsl:attribute name="name"><xsl:value-of select="@name" /></xsl:attribute>
    <xsl:attribute name="class">InputValue</xsl:attribute>
    <xsl:attribute name="type">text</xsl:attribute>
    <xsl:if test="enable = 'false'">
<xsl:attribute name="readonly">true</xsl:attribute>
</xsl:if>
<xsl:if test="enable = 'hidden'">
<xsl:attribute name="style">display:none</xsl:attribute>
</xsl:if>
<xsl:if test="default-value">
<xsl:attribute name="value"><xsl:value-of select="default-value" /></xsl:attribute>
</xsl:if>
<xsl:if test="comp/events/event">
<xsl:for-each select="comp/events/event">
<xsl:choose>
<xsl:when test="@type='click'">
<xsl:attribute name="onclick">
<xsl:value-of select="exec-method"></xsl:value-of>
</xsl:attribute>
</xsl:when>
<xsl:when test="@type='blur'">
<xsl:attribute name="onblur">
<xsl:value-of select="exec-method"></xsl:value-of>
</xsl:attribute>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:if>
    </xsl:element>
    <!-- 如果存在nobr标签,则不换行 -->
<xsl:choose>
<xsl:when test="nobr"></xsl:when>
<xsl:otherwise>
<div class="clear"></div>
</xsl:otherwise>
</xsl:choose>
    </xsl:template>

<!--结束生成text-->


<!-- 定义一个template,生成下拉框,根据xml设置文本框的id,name,change方法等,代码如下 -->
<xsl:template name="select">
<xsl:choose>
<xsl:when test="enable">
<xsl:if test="enable!='hidden'">
<xsl:if test="description">
<span class="name"><xsl:value-of select="description" />:</span>
</xsl:if>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:if test="description">
<span class="name"><xsl:value-of select="description" />:</span>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
    <xsl:element name="select">
    <xsl:attribute name="id"><xsl:value-of select="@name" /></xsl:attribute>
    <xsl:attribute name="name"><xsl:value-of select="@name" /></xsl:attribute>
    <xsl:attribute name="class">SelectValue</xsl:attribute>
    <xsl:if test="comp/events/event">
<xsl:for-each select="comp/events/event">
<xsl:choose>
<xsl:when test="@type='change'">
<xsl:attribute name="onchange">
<xsl:value-of select="exec-method"></xsl:value-of>
</xsl:attribute>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:if>
    <xsl:choose>
    <xsl:when test="enable">
    <xsl:if test="enable = 'false'">
<xsl:element name="option">
<xsl:if test="default-text-value">
<xsl:attribute name="value"><xsl:value-of select="default-text-value/value" /></xsl:attribute>
<xsl:value-of select="default-text-value/text" />
</xsl:if>
</xsl:element>
</xsl:if>
<xsl:if test="enable = 'hidden'">
<xsl:attribute name="style">display:none</xsl:attribute>
<xsl:element name="option">
<xsl:if test="default-text-value">
<xsl:attribute name="value"><xsl:value-of select="default-text-value/value" /></xsl:attribute>
<xsl:value-of select="default-text-value/text" />
</xsl:if>
</xsl:element>
</xsl:if>
<xsl:if test="enable = 'true'">
<xsl:for-each select="values/text-value">
    <xsl:element name="option">
<xsl:attribute name="value"><xsl:value-of select="value" /></xsl:attribute>
<xsl:value-of select="text" />
</xsl:element>
    </xsl:for-each>
</xsl:if>
    </xsl:when>
    <xsl:otherwise>
    <xsl:for-each select="values/text-value">
    <xsl:element name="option">
<xsl:attribute name="value"><xsl:value-of select="value" /></xsl:attribute>
<xsl:value-of select="text" />
</xsl:element>
    </xsl:for-each>
    </xsl:otherwise>
    </xsl:choose>
    </xsl:element>
    <!-- 如果存在nobr标签,则不换行 -->
<xsl:choose>
<xsl:when test="nobr">  </xsl:when>
<xsl:otherwise>
<div class="clear"></div>
</xsl:otherwise>
</xsl:choose>
    </xsl:template>

<!--结束select-->

<!-- 定义一个template,生成button,根据xml设置文本框的id,name,click方法等,代码如下 -->

<xsl:template name="button">
    <xsl:element name="input">
    <xsl:if test="@name">
    <xsl:attribute name="id"><xsl:value-of select="@name" /></xsl:attribute>
    <!-- <xsl:attribute name="name"><xsl:value-of select="@name" /></xsl:attribute> -->
    </xsl:if>
    <xsl:attribute name="type">button</xsl:attribute>
    <xsl:choose>
    <xsl:when test="default-value">
    <xsl:attribute name="value">
    <xsl:value-of select="default-value"></xsl:value-of>
    </xsl:attribute>
    </xsl:when>
    <xsl:otherwise>
    <xsl:attribute name="value">确定</xsl:attribute>
    </xsl:otherwise>
    </xsl:choose>
    <xsl:if test="comp/events/event">
<xsl:for-each select="comp/events/event">
<xsl:choose>
<xsl:when test="@type='click'">
<xsl:attribute name="onclick">
<xsl:value-of select="exec-method"></xsl:value-of>
</xsl:attribute>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:if>
    </xsl:element>
    <!-- 如果存在nobr标签,则不换行 -->
<xsl:choose>
<xsl:when test="nobr">  </xsl:when>
<xsl:otherwise>
<div class="clear"></div>
</xsl:otherwise>
</xsl:choose>
    </xsl:template>

<!--结束button-->

<!--上面的三段template相当于三个组件,下面的代码是解析xml,生成相应的组件,代码如下-->
<xsl:for-each select="parameters/param">
        <xsl:choose>
        <xsl:when test="comp">
        <xsl:choose>
        <xsl:when test="comp/@type='input'">
[color=red]         <xsl:call-template name="input"></xsl:call-template>[color=red]
        </xsl:when>
        <xsl:when test="comp/@type='select'">
        <xsl:call-template name="select"></xsl:call-template>
        </xsl:when>
        <xsl:when test="comp/@type='button'">
        <xsl:call-template name="button"></xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
        <xsl:call-template name="input"></xsl:call-template>
        </xsl:otherwise>
        </xsl:choose>
        </xsl:when>
        <xsl:otherwise>
        <xsl:call-template name="input"></xsl:call-template>
        </xsl:otherwise>
        </xsl:choose>
       
       
        </xsl:for-each>

<!--结束-->

<!--下面是xml的内容-->
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="bussiness/common/common.xsl"?>
<parameters>
     <param name="title">
<description>标题</description>
<data-type>varchar</data-type>
<enable>true</enable>
<time-value>aaa</time-value>
</param>
<param name="titleSize">
<description>标题字体</description>
<comp type="select"></comp>
<values>
<text-value>
<text>1px</text>
<value>1</value>
</text-value>
<text-value>
<text>2px</text>
<value>2</value>
</text-value>
<text-value>
<text>3px</text>
<value>3</value>
</text-value>
<text-value>
<text>4px</text>
<value>4</value>
</text-value>
<text-value>
<text>5px</text>
<value>5</value>
</text-value>
</values>
<time-value>3</time-value>
</param>
<param name="lineShape">
<description>线    型</description>
<comp type="select"></comp>
<values>
<text-value>
<text>1px</text>
<value>1</value>
</text-value>
<text-value>
<text>2px</text>
<value>2</value>
</text-value>
<text-value>
<text>3px</text>
<value>3</value>
</text-value>
<text-value>
<text>4px</text>
<value>4</value>
</text-value>
<text-value>
<text>5px</text>
<value>5</value>
</text-value>
</values>
<time-value>3</time-value>
</param>
<param name="lineWidth">
<description>线条宽度</description>
<enable>true</enable>
<comp type="select"></comp>
<values>
<text-value>
<text>1px</text>
<value>1</value>
</text-value>
<text-value>
<text>2px</text>
<value>2</value>
</text-value>
<text-value>
<text>3px</text>
<value>3</value>
</text-value>
<text-value>
<text>4px</text>
<value>4</value>
</text-value>
<text-value>
<text>5px</text>
<value>5</value>
</text-value>
</values>
<time-value>3</time-value>
</param>
<param name="lineColor">
<description>线条颜色</description>
<enable>false</enable>
<time-value>red</time-value>
<nobr />
</param>
<param name="btnColor">
<default-value>选色</default-value>
<enable>true</enable>
<comp type="button">
</comp>
</param>
<param name="position">
<enable>hidden</enable>
<default-value>2</default-value>
<nobr />
<time-value>2</time-value>
</param>
</parameters>

分享到:
评论

相关推荐

    xml+xsl+css生成制作html网页

    xml+xsl+css html网页 xml+xsl+css html网页 xml+xsl+css html网页 xml+xsl+css html网页 xml+xsl+css html网页 xml+xsl+css html网页

    xml xsl网页生成

    在“xml xsl网页生成”这个主题中,我们主要关注如何利用XML和XSL将结构化的XML数据转化为用户友好的网页。以下是一些关于这个主题的关键知识点: 1. XML基础知识: - **语法**:XML文档遵循严格的语法规则,包括...

    用XML和XSL来生成动态页面

    总的来说,XML和XSL的组合提供了一种强大且灵活的方法,用于生成动态网页和处理结构化数据。它们不仅在企业级应用中发挥着重要作用,也在Web服务、数据集成和跨平台通信等领域有着广泛应用。理解XML的标准化和XSL的...

    利用xml和xsl自动生成菜单

    通过XSL,我们可以定义XML数据如何被呈现出来,例如生成HTML菜单。下面是一个简单的XSL示例,将上面的XML转换为HTML菜单: ```xml &lt;xsl:stylesheet version="1.0" xmlns:xsl=...

    XML+XSL/FO生成PDF文件Demo

    3. **应用XSLT转换**:使用XSLT处理器(如Saxon或Xalan)将XML文件和XSLT样式表结合,生成XSL-FO格式的中间文件。这个过程就是所谓的“转换”。 4. **使用FOP生成PDF**:最后,FOP插件读取XSL-FO文件,根据其中的...

    javaxml,xsl,html文件转换.pdf

    Java XML、XSL 和 HTML 文件转换技术详解 本文档主要讲解了 Java 中的 XML、XSL 和 HTML 文件转换技术。通过对 Java 代码的分析,我们可以了解到如何将 XML 文件转换为 HTML 文件,并了解到 XSL 模板的应用。 首先...

    xml和xsl的练习例子

    5. **实际应用**:尝试将XML和XSL应用于实际项目中,比如生成动态报告、创建可配置的网页布局等。 6. **调试和测试**:使用XML和XSLT的验证工具和调试器来检查和修复错误,确保转换结果符合预期。 通过这些练习,...

    xml与xsl的小实例

    通过XSLT,1.xsl会根据其规则对1.xml进行解析,生成一个新的结构或样式,这可能是用于网页展示的HTML。 XSLT的工作原理是通过模板匹配。模板定义了当遇到特定的XML元素时如何处理。例如,如果我们有如下的XML元素:...

    XML与CSS、XML与XSL及在页面中直接调用XML的数据

    XML(可扩展标记语言)是一种用于标记数据的语言,它的设计目标...综上所述,XML、CSS和XSL是Web开发中不可或缺的工具,它们共同作用,使我们能够有效地组织、样式化和转换数据,提升网页和应用程序的功能和用户体验。

    简单的xml与xsl实例

    XML(Extensible Markup Language)和XSL(eXtensible Stylesheet Language)是Web开发中的两种重要技术,它们主要用于数据的存储和呈现。XML是一种标记语言,用于结构化地描述数据,而XSL则用于转换XML文档的结构,...

    xml+xsl

    在浏览器中,当一个XML文档与相应的XSL样式表一起加载时,浏览器会根据XSLT规则解析XML,并生成新的HTML,从而实现动态的、富于表现力的页面效果。 **源码与工具** 在标签中提到的“源码”可能指的是XML和XSLT的源...

    xml+xsl+css+dtd书写的个人网页

    在XML+XSL的项目中,CSS用于美化由XSL转换后的HTML页面,包括颜色、字体、布局、动画等各种视觉效果。通过CSS,可以实现响应式设计,让网页在不同设备上都能有良好的展示效果。 DTD(Document Type Definition)是...

    QTP:XML联合XSL输出html报表

    - **加载XML和XSL文件**:使用`CreateObject`创建DOM对象,并加载XML和XSL文件。 - **应用XSLT转换**:调用`transformNode`方法应用XSLT转换。 - **输出HTML文件**:将转换后的HTML文本写入指定的文件中。 #### ...

    XML+xsl讲XML文档的内容用xsl建表

    5. **应用转换**:最后,使用支持XSLT的工具或编程语言(如Java、Python等)将XML文档和XSLT模板结合,执行转换生成HTML或其他格式的输出。 通过这样的过程,我们可以将复杂、结构化的XML数据转化为易于理解和操作...

    使用JavaScript+XML+XSL创建树形目录

    在HTML页面中,我们可以使用JavaScript来加载XML和XSL文件,然后应用XSL转换得到HTML,最后使用DOM操作来实现树形目录的交互功能。以下是一个简单的JavaScript示例: ```javascript function loadTree() { var xhr...

    网页版xml卡片消息生成

    3. **解析和渲染**:在网页端,XML卡片需要被解析并转换成可读的HTML,这可以通过JavaScript的DOM操作或者XSLT(XSL Transformations)实现。XSLT是一种转换XML到其他格式(如HTML)的语言。 ```xsl &lt;xsl:...

    javaxml,xsl,html文件转换借鉴.pdf

    在Java编程中,XML(Extensible Markup Language)、XSL(eXtensible Stylesheet Language)和HTML(Hypertext Markup Language)是三种常见的数据格式,它们各自有特定的应用场景。XML用于结构化数据存储,XSL用于...

    xsl、xml编程电子书和网页

    标题中的“xsl、xml编程电子书和网页”揭示了我们即将探讨的主题——XSL(Extensible Stylesheet Language)和XML(eXtensible Markup Language)的编程知识。这两个技术在处理结构化数据方面起着关键作用,尤其在...

    xsl与xml转化的实例

    - **动态网站**:服务器端可以使用XSL将XML数据转换为动态生成的HTML页面。 - **文档生成**:XML可以作为源数据,通过XSL转换生成PDF报告、Word文档等。 - **本地化**:多语言网站使用XML存储文本资源,XSL根据用户...

Global site tag (gtag.js) - Google Analytics