I'm trying to do something similar to this. I want to populate a repeating table with queried data from a secondary data source. I've been trying to use the transformNode() method with a XSL stylesheet but it gives me an error that the stylesheet does not contain a document element. Does transformNode() only convert to XHTML and not to XML? Any other method of doing this?
Stylesheet:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:d="http://schemas.microsoft.com/office/infopath/2003/ado/dataFields"
xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution"
xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-11-09T19:54:35"
xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" version="1.0">
<xsl:output encoding="UTF-8" method="xml"/>
<xsl:template match="/">
<xsl:for-each select="d:tblServer">
<my:qServer>
<my:qServerName><xsl:value-of select="@ServerName" /></my:qServerName>
<my:qManufacturer><xsl:value-of select="d:tblManufacturers[@MfgName]" /></my:Manufacturer>
<my:qModel><xsl:value-of select="d:tblManufacturerModels[@ModelName]" /></my:qModel>
<my:qActive><xsl:value-of select="@Active" /></my:qActive>
<my:qRecordID><xsl:value-of select="@ServerID" /></my:qRecordID>
</my:qServer>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Code:
function queryam::OnClick(eventObj)
{
var objADOAdapter, re, strNewSQL, strSQL;
var objServerName = XDocument.DOM.selectSingleNode( "//my:ServerForm/my:ServerName" );
if (objServerName.text == "")
{
XDocument.UI.Alert("Please enter a server name to query for.");
return
};
objADOAdapter = XDocument.DataObjects("AssetManager").QueryAdapter;
re = /order by \"ServerName\"/g;
strSQL = objADOAdapter.Command;
strNewSQL = strSQL.replace(re, "where (\"ServerName\" like '%" + objServerName.text + "%') order by \"ServerName\"");
objADOAdapter.Command = strNewSQL;
XDocument.DataObjects.Item("AssetManager").Query();
objADOAdapter.Command = strSQL;
var XMLFileDOM = XDocument.GetDOM("AssetManager")
var objAMServer = XMLFileDOM.selectSingleNode( "//d:tblServer" );
var objQuerySelect = XDocument.DOM.selectSingleNode( "//my:ServerForm/my:QuerySelect" );
objQuerySelect.text = objAMServer.getAttribute("ServerID")
var objxsl = XDocument.CreateDOM()
objxsl.async = false
objxsl.load("trans.xsl")
objAMServer = XMLFileDOM.selectSingleNode( "//dfs:dataFields" );
objQuerySelect = XDocument.DOM.selectSingleNode( "//my:ServerForm/my:qServers");
objQuerySelect.text = objAMServer.transformNode(objxsl);
}