book.xml:
<bookstore>
<book genre="autobiography" publicationdate="1981-09-09" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967-05-22" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991-03-24" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
book.xslt:
<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" >
<output method="text" />
<template match="/">
Book title is <value-of select="//title" />
</template>
</stylesheet>
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;
static void Main(string[] args)
{
XPathDocument doc = new XPathDocument("../../book.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathNavigator myBook = nav.SelectSingleNode("descendant::book[@ISBN = '0-201-63361-2']");
XmlReader reader = myBook.ReadSubtree();
XmlNodeType noe = reader.MoveToContent();//跳过空白,注释等不是内容的节点
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("../../book.xslt");
xslt.Transform(reader, XmlWriter.Create(Console.Out, xslt.OutputSettings));
Console.ReadLine();
}
输出:Book title is The Confidence Man.