XmlDataSource.Transforming Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Происходит перед тем, как таблица стилей, определенная свойством Transform или заданная с помощью свойства TransformFile, применяется к данным XML.
public:
event EventHandler ^ Transforming;
public event EventHandler Transforming;
member this.Transforming : EventHandler
Public Custom Event Transforming As EventHandler
Тип события
Примеры
В следующем примере кода показано, как использовать XmlDataSource элемент управления с элементом TreeView управления для отображения преобразованных XML-данных. Преобразование XML выполняется с помощью таблицы стилей, указанной свойством TransformFile . Кроме того, таблица стилей использует аргументы преобразования, которые передаются в элемент управления источником данных во XsltArgumentList время выполнения. В примере кода показано, как передать XsltArgumentList объект в элемент управления источником данных путем обработки Transforming события с помощью пользовательского обработчика событий.
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void TransformEventHandler(object sender, EventArgs e) {
// Add a dynamic transformation argument.
DateTime d = new DateTime();
d = DateTime.Now.AddDays(20);
// Create an XsltArgumentList.
XsltArgumentList xslArg = new XsltArgumentList();
xslArg.AddParam("purchdate", "", d.ToShortDateString());
((XmlDataSource) sender).TransformArgumentList = xslArg;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:XmlDataSource
id="XmlDataSource1"
runat="server"
datafile="bookstore.xml"
transformfile="bookswithdiscount.xsl"
ontransforming="TransformEventHandler" />
<!- TreeView uses hierachical data, so the
XmlDataSource uses an XmlHierarchicalDataSourceView
when a TreeView is bound to it. -->
<asp:treeview
id="TreeView1"
runat="server"
datasourceid="XmlDataSource1">
<databindings>
<asp:treenodebinding Depth="1" datamember="genre"
textfield="name" valuefield="name"/>
<asp:treenodebinding depth="2" datamember="book"
textfield="title" valuefield="title"/>
<asp:treenodebinding depth="3" datamember="chapter"
textfield="name" valuefield="num"/>
</databindings>
</asp:treeview>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<script runat="server">
Private Sub TransformEventHandler(sender As Object, e as EventArgs)
' Add a dynamic transformation argument.
Dim d As New DateTime
d = DateTime.Now.AddDays(20)
'Create an XsltArgumentList.
Dim xslArg As XsltArgumentList = New XsltArgumentList
xslArg.AddParam("purchdate", "", d.ToShortDateString())
Dim aXmlDataSource as XmlDataSource = CType(sender, XmlDataSource)
aXmlDataSource.TransformArgumentList = xslArg
End Sub ' TransformEventHandler
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:xmldatasource
id="XmlDataSource1"
runat="server"
datafile="bookstore.xml"
transformfile="bookswithdiscount.xsl"
ontransforming="TransformEventHandler" />
<!- TreeView uses hierachical data, so the
XmlDataSource uses an XmlHierarchicalDataSourceView
when a TreeView is bound to it. -->
<asp:treeview
id="TreeView1"
runat="server"
datasourceid="XmlDataSource1">
<databindings>
<asp:treenodebinding depth="1" datamember="genre"
textfield="name" valuefield="name"/>
<asp:treenodebinding depth="2" datamember="book"
textfield="title" valuefield="title"/>
<asp:treenodebinding depth="3" datamember="chapter"
textfield="name" valuefield="num"/>
</databindings>
</asp:treeview>
</form>
</body>
</html>
XML-файл в примере кода содержит следующие данные:
<bookstore>
<genre name="fiction">
<book ISBN="0000000000">
<title>Secrets of Silicon Valley</title>
<price>12.95</price>
<chapters>
<chapter num="1" name="Introduction" />
<chapter num="2" name="Body" />
<chapter num="3" name="Conclusion" />
</chapters>
</book>
</genre>
<genre name="novel">
<book genre="novel" ISBN="1111111111">
<title>Straight Talk About Computers</title>
<price>24.95</price>
<chapters>
<chapter num="1" name="Introduction" />
<chapter num="2" name="Body" />
<chapter num="3" name="Conclusion" />
</chapters>
</book>
</genre>
</bookstore>
Преобразование XML-данных выполняется со следующей таблицей стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="purchdate"/>
<xsl:template match="bookstore">
<bookstore>
<xsl:apply-templates select="genre"/>
</bookstore>
</xsl:template>
<xsl:template match="genre">
<genre>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:apply-templates select="book"/>
</genre>
</xsl:template>
<xsl:template match="book">
<book>
<xsl:attribute name="ISBN">
<xsl:value-of select="@ISBN"/>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="title"/>
Price: <xsl:value-of select="price"/>
15% discount if purchased by: <xsl:value-of select="$purchdate"/>
</xsl:attribute>
<xsl:apply-templates select="chapters/chapter" />
</book>
</xsl:template>
<xsl:template match="chapter">
<chapter>
<xsl:attribute name="num">
<xsl:value-of select="@num"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
<xsl:apply-templates/>
</chapter>
</xsl:template>
</xsl:stylesheet>
Комментарии
Обработайте Transforming событие, чтобы задать TransformArgumentList свойство с XsltArgumentList помощью объекта до того, XmlDataSource как элемент управления выполнит преобразование XML.
Дополнительные сведения об обработке событий см. в разделе Обработка и создание событий.