xlst-html(四)标单编辑

books.xml:

<?xml version="1.0" encoding="utf-8"?>
<!--<?xml-stylesheet type="text/xsl" href="books.xslt"?>-->
<library>
  <name>首都图书馆</name>
  <address>朝阳区华威桥南</address>
  <books>
    <book type="math">
      <id>0000</id>
    </book>
    <book type="computer">
      <id>0001</id>
      <name>Xml初学</name>
      <publisher>人民出版社</publisher>
      <fee>100.54</fee>
    </book>
    <book type="computer">
      <id>0002</id>
      <name>XSD定义</name>
      <author>子弟</author>
      <publisher>子弟出版社</publisher>
      <publishdate>2010-05-0-18</publishdate>
      <fee>102.54</fee>
    </book>
  </books>
</library>

 

 

books.xslt:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
 <xsl:template match="/">
  <html>
   <body>
    <form method="post" action="Default.aspx">
     <h2>书籍编写</h2>
     <table border="0">
      <xsl:for-each select="library/books/book">
       <tr>
        <td>
         <xsl:value-of select="id"/>
        </td>
        <td>
         <input type="text">
          <xsl:attribute name="id">
           <xsl:value-of select="id" />
          </xsl:attribute>
          <xsl:attribute name="name">
           <xsl:value-of select="id" />
          </xsl:attribute>
          <xsl:attribute name="value">
           <xsl:value-of select="name" />
          </xsl:attribute>
         </input>
        </td>
       </tr>
      </xsl:for-each>
     </table>
     <br />
     <input type="submit" id="btn_sub" name="btn_sub" value="Submit" />
     <input type="reset" id="btn_res" name="btn_res" value="Reset" />
    </form>
   </body>
  </html>
 </xsl:template>
</xsl:stylesheet>

booksout.xslt:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    exclude-result-prefixes="msxsl">
 <xsl:template match="/">
  <html>
   <body>
    <form>
     <h2>书籍编写</h2>
     <table border="0">
      <xsl:for-each select="library/books/book">
       <tr>
        <td>
         <xsl:value-of select="id"/>
        </td>
        <td>
         <xsl:value-of select="name"/>
        </td>
       </tr>
      </xsl:for-each>
     </table>
    </form>
   </body>
  </html>
    </xsl:template>
</xsl:stylesheet>

Default.aspx.cs

        protected void Page_Load(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(Request.Form["btn_sub"]))
            {
                XLST();
            }
            else
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(Server.MapPath("htmlxml/books.xml"));
                for (int i = 0; i < Request.Form.Count; i++)
                {
                    if (Request.Form.Keys[i].IndexOf("btn_") < 0)
                    {
                         XmlNode node= doc.SelectSingleNode("library/books/book[id='" + Request.Form.Keys[i] + "']/name");
                         if (node != null)
                         { node.FirstChild.Value = Request.Form[i]; }
                    }
                }
                doc.Save(Server.MapPath("htmlxml/books.xml"));
                XLST();
            }
      }

 

       public void XLST()
        {
            XmlReader xmlreader = XmlReader.Create(Server.MapPath("htmlxml/books.xml"));
            XmlReader xsltreader = XmlReader.Create(Server.MapPath("htmlxml/books.xslt"));
            StringBuilder sb = new StringBuilder();
            try
            {
                XslCompiledTransform xlst = new XslCompiledTransform();
                xlst.Load(xsltreader);
                XPathDocument doc = new XPathDocument(xmlreader);
                System.IO.StringWriter sw = new System.IO.StringWriter(sb);
                XmlTextWriter writer = new XmlTextWriter(sw);
                xlst.Transform(doc, writer);
                writer.Close();
                Response.Write(sb.ToString());
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }

 

结果:

书籍编写

0000
0001
0002

要将XML转换为文本,通常可以使用XSLT(Extensible Stylesheet Language Transformations)来实现。下面是一个简单的XSLT示例,将XML转换为文本格式: ```xml <!-- input.xml --> <?xml version="1.0" encoding="UTF-8"?> <root> <element>ABC</element> <element>123</element> </root> ``` ```xslt <!-- transform.xsl --> <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" indent="no"/> <xsl:template match="/"> <xsl:for-each select="//element"> <xsl:value-of select="."/> <xsl:text> </xsl:text> <!-- 换行符 --> </xsl:for-each> </xsl:template> </xsl:stylesheet> ``` 使用以上的XSLT样式表,可以将XML文件中的`<element>`元素的文本提取出来并以文本格式输出。下面是一个使用Java语言的示例代码,演示如何使用Java中的Transformer类执行XSLT转换: ```java import javax.xml.transform.*; import javax.xml.transform.stream.*; public class XmlToTextConverter { public static void main(String[] args) throws Exception { // 加载XSLT样式表 Source xslt = new StreamSource(new java.io.File("transform.xsl")); // 创建Transformer对象 Transformer transformer = TransformerFactory.newInstance().newTransformer(xslt); // 加载XML文件 Source xml = new StreamSource(new java.io.File("input.xml")); // 执行转换并输出结果 transformer.transform(xml, new StreamResult(new java.io.File("output.txt"))); } } ``` 执行上述代码后,将生成一个名为`output.txt`的文件,其中包含以下文本内容: ``` ABC 123 ``` 这样就完成了将XML转换为文本的过程。你可以根据实际需求自定义XSLT样式表来实现更复杂的转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值