转换中的 XPathNavigator给脚本执行传递参数
2004-11-22 15:52
375 查看
XPathNavigator 类提供对数据的只读随机访问,旨在用作 XSLT 的输入。它在 XPathDocument、XmlDataDocument 和 XmlDocument 上实现。XPathNavigator 基于 XML 路径语言 (XPath) 建议第 5 节中所描述的 W3C 数据模型。
XPathNavigator 定义一个适用于任何存储区的游标模型,并提供对任何数据存储区的快速、只读 XPath 查询。XPathNavigator 还是用来在结果树片段上迭代的类。
API 使您能够从存储区的当前节点中获取信息,并移动到连接的节点。XPathNavigator 是使用 Move 方法集在存储区上执行遍历的游标样式模型。XPathNavigator 总是定位在节点上。任何失败的 Move 方法都不会改变 XPathNavigator。
XPathNavigator 是用于循环访问节点片段的类。下面的代码示例通过调用带参数 fragment(包含 XML)的函数,在样式表中创建一个结果树片段。
test.xsl
[Visual Basic, C#]
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl ="urn:schemas-microsoft-com:xslt"
xmlns:user="http://www.adventure-works.com"
version="1.0">
<xsl:variable name="fragment">
<authorlist>
<author>Joe</author>
</authorlist>
</xsl:variable>
<msxsl:script language="C#" implements-prefix="user">
<![CDATA[
string NodeFragment(XPathNavigator nav)
{
if (nav.HasChildren)
return nav.Value;
else
return "";
}
]]>
</msxsl:script>
<xsl:template match="/">
<xsl:value-of select="user:NodeFragment($fragment)"/>
</xsl:template>
</xsl:stylesheet>
test.xml
[Visual Basic, C#]
<root>Some text</root>
下面的代码使用 test.xsl 样式表和 test.xml 输入数据。
[C#]
using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.Text;
public class sample
{
public static void Main()
{
XslTransform xslt = new XslTransform();
xslt.Load("test.xsl");
XPathDocument xd = new XPathDocument("test.xml");
Stream strmTemp = new FileStream("out.xml", FileMode.Create, FileAccess.ReadWrite);
xslt.Transform(xd, null, strmTemp, null);
}
}
在文件 out.xml 中可以看到转换结果:
输出 (out.xml)
[Visual Basic, C#]
<?xml version="1.0" encoding="utf-8"?>Joe
XPathNavigator 定义一个适用于任何存储区的游标模型,并提供对任何数据存储区的快速、只读 XPath 查询。XPathNavigator 还是用来在结果树片段上迭代的类。
API 使您能够从存储区的当前节点中获取信息,并移动到连接的节点。XPathNavigator 是使用 Move 方法集在存储区上执行遍历的游标样式模型。XPathNavigator 总是定位在节点上。任何失败的 Move 方法都不会改变 XPathNavigator。
XPathNavigator 是用于循环访问节点片段的类。下面的代码示例通过调用带参数 fragment(包含 XML)的函数,在样式表中创建一个结果树片段。
test.xsl
[Visual Basic, C#]
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl ="urn:schemas-microsoft-com:xslt"
xmlns:user="http://www.adventure-works.com"
version="1.0">
<xsl:variable name="fragment">
<authorlist>
<author>Joe</author>
</authorlist>
</xsl:variable>
<msxsl:script language="C#" implements-prefix="user">
<![CDATA[
string NodeFragment(XPathNavigator nav)
{
if (nav.HasChildren)
return nav.Value;
else
return "";
}
]]>
</msxsl:script>
<xsl:template match="/">
<xsl:value-of select="user:NodeFragment($fragment)"/>
</xsl:template>
</xsl:stylesheet>
test.xml
[Visual Basic, C#]
<root>Some text</root>
下面的代码使用 test.xsl 样式表和 test.xml 输入数据。
[C#]
using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.Text;
public class sample
{
public static void Main()
{
XslTransform xslt = new XslTransform();
xslt.Load("test.xsl");
XPathDocument xd = new XPathDocument("test.xml");
Stream strmTemp = new FileStream("out.xml", FileMode.Create, FileAccess.ReadWrite);
xslt.Transform(xd, null, strmTemp, null);
}
}
在文件 out.xml 中可以看到转换结果:
输出 (out.xml)
[Visual Basic, C#]
<?xml version="1.0" encoding="utf-8"?>Joe
相关文章推荐
- 超大数乘法程序
- MSN 界面 模拟 (-)
- 点滴心得
- 利用XslTransform转换 的 XmlDocument 输入
- XslTransform 类实现 XSLT 处理器
- 电子邮局Neomail完全安装手册
- XslTransform 的 XPathDocument 输入
- 信息管理系统设计书的结构框架
- 样式表参数和扩展对象的 XsltArgumentList(利用程序编码添加脚本 != 在CDATA下添加)
- 钩子
- GBDP技术简介补充 2004.11
- 使用 的 XSLT 样式表脚本撰写(CDATA添加脚本)
- 常用诗词语句出处
- Improved Performance with a Connection Pool (转)
- 记住JSP内置对象的简单方法(原创)
- 如何在Linux系统下实现Server Push
- 一段实现DataGrid的“编辑”、“取消”功能脚本,目的是不产生页面刷新
- The reference to entity "password" must end with the ';' delimiter.的原因跟解决方法
- 一个可以在页面上随意画线、多边形、圆,填充等功能的js
- 关于组队具体实施方法