Здравствуйте, [darkening], Вы писали:
D>Доброе время суток!
D>Т.е. нужно отобразить все элементы с заданным id. Для этого я написал небольшой XSLT шаблон. Все бы хорошо, но как в XSLT передать параметр через IE URL? Было бы удобно вызывать, например: "myfile.xml?forid=cool", и тем самым не плодить клоны этих шаблонов.
Можно передавать параметры в XSLT процессор, например так
var xslt = Server.CreateObject("Msxml2.XSLTemplate.4.0");
var xslDoc = Server.CreateObject("Msxml2.FreeThreadedDOMDocument.4.0");var xslProc;
xslDoc.async = false;
xslDoc.load(Server.MapPath("myfile.xsl"));
xslt.stylesheet = xslDoc;
var xmlDoc = Server.CreateObject("Msxml2.DOMDocument.4.0");
xmlDoc.async = false;
xmlDoc.load(Server.MapPath("myfile.xml"));
xslProc = xslt.createProcessor();
xslProc.input = xmlDoc;
xslProc.addParameter("forid", "cool");
xslProc.transform();
А в xslt объявить <xsl:param name="forid"/>
в которую будет передаваться значение параметра.
Здравствуйте, thor, Вы писали:
D>>Т.е. нужно отобразить все элементы с заданным id. Для этого я написал небольшой XSLT шаблон. Все бы хорошо, но как в XSLT передать параметр через IE URL? Было бы удобно вызывать, например: "myfile.xml?forid=cool", и тем самым не плодить клоны этих шаблонов.
T>Можно передавать параметры в XSLT процессор, например так
T>T>var xslt = Server.CreateObject("Msxml2.XSLTemplate.4.0");
[.......]
T>xslProc.addParameter("forid", "cool");
T>xslProc.transform();
T>
Ошибку выдает — The Server is undefined.
Можно простенький пример использования? Заранее спаисбо.
... << RSDN@Home 1.0 beta 6a >>
Здравствуйте, [darkening], Вы писали:
D>Ошибку выдает — The Server is undefined.
D>Можно простенький пример использования? Заранее спаисбо.
Привожу исходники небольшого примера, у меня работают
test.xml
<?xml version="1.0" encoding="windows-1251"?>
<items>
<item id="cool">item1</item>
<item id="cool2">item2</item>
<item id="cool">item3</item>
</items>
test.xslt
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="windows-1251" indent="yes"/>
<xsl:param name="forid"/>
<xsl:template match="*">
<xsl:apply-templates select="//item"/>
</xsl:template>
<xsl:template match="item">
<xsl:if test="@id=$forid">
<xsl:value-of select="text()"/><br/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
test.asp
<%@language="JScript"%>
<%
var xslt = Server.CreateObject("Msxml2.XSLTemplate.4.0");
var xslDoc = Server.CreateObject("Msxml2.FreeThreadedDOMDocument.4.0");
var xslProc;
try {
xslDoc.async = false;
xslDoc.load(Server.MapPath('test.xslt'));
xslt.stylesheet = xslDoc;
var xmlDoc = Server.CreateObject("Msxml2.DOMDocument.4.0");
xmlDoc.async = false;
xmlDoc.validateOnParse = false;
var b = xmlDoc.load(Server.MapPath('test.xml'));
xslProc = xslt.createProcessor();
xslProc.input = xmlDoc;
xslProc.addParameter("forid", "cool2")
xslProc.transform();
var out = xslProc.output;
Response.write(out)
}
catch(e){
Response.Write('fail');
}
%>
Если возникнут пробемы ICQ #147468765