C clown Medlem sedan juni 2000 126 inlägg Frågan 6 aug. 2002 07:31 #1 HJÄLP...
Min server vill inte transformera mitt xml dokument med följande xsl kod.
Jag vet inte vad det är för fel på den ... Nån som kan kontrollera med nått bra program?
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:if test="NiceInfo/Person/FranvaroBesked/Abcense/Info!='No abcense'">
<span ID="Info1991" style="position: absolute; visibility: hidden; width:700px; height:100px; z-index:1;">
<table border="0" bgcolor="#000000" bordercolor="#000000" cellspacing="0" cellpadding="1">
<tr>
<td>
<table border="0" bgcolor="#f1f1f1" cellspacing="0" cellpadding="0">
<tr bgcolor="#f1f1f1">
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1"><b>Reason</b></td>
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1" width="100"><b>From</b></td>
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1" width="100"><b>To</b></td>
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1"><b>Comment</b></td>
<td bgcolor="#f1f1f1"><a href="javascript:hide('Info1991')"> <img border="0" src="http://151.183.8.67/images/common/kryss.gif" /></a></td>
</tr>
<tr bgcolor="#000000">
<td height="2" colspan="9" align="center"></td>
</tr>
<xsl:for-each select="NiceInfo/Person/FranvaroBesked/Abcense">
<tr bgcolor="#f1f1f1" height="30">
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1"><xsl:value-of select="Reason"/></td>
<td bgcolor="#f1f1f1"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1"><xsl:value-of select="From"/></td>
<td bgcolor="#f1f1f1"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<xsl:choose>
<xsl:when test="Picture!=''"><td bgcolor="#f1f1f1"><b><xsl:value-of select="To"/></b></td></xsl:when>
<xsl:when test="Picture!=''"><td bgcolor="#f1f1f1"><xsl:value-of select="To"/></td></xsl:when>
<xsl:otherwise>resultA</xsl:otherwise>
</xsl:choose>
<td bgcolor="#f1f1f1"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1"><xsl:value-of select="Comment"/></td>
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
</tr>
<tr>
<td height="1" colspan="9" align="center" bgcolor="#000000"></td>
</tr>
</xsl:for-each>
</table>
</td>
</tr>
</table>
</span>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
och här finns xml dokumentet som jag försöker köra xsl:en på
<?xml version="1.0" encoding="ISO8859-1" ?>
<?xml-stylesheet type="text/xsl" href="nice_info.xsl"?>
<NiceInfo>
<Person recno="7732">
<Namn> Florin Jonas </Namn>
<TelefonNr> 1234</TelefonNr>
<OrganisationOrt> TW </OrganisationOrt>
<Passning>
</Passning>
<Rum> 123456</Rum>
<Land> </Land>
<MobilTelefon> </MobilTelefon>
<Fax> 1234
</Fax>
<Email> [email]jonas.florin@tetrapak.com[/email] </Email>
<SeNamn> ntaccount</SeNamn>
<Titel>
</Titel>
<Bolag> Tetra Pak Global Technical Sup </Bolag>
<BolagsNr> 1234-1234</BolagsNr>
<JackNr>
</JackNr>
<Ater> </Ater>
<Sokare> </Sokare>
<Arende> Projektledare
</Arende>
<FranvaroBesked>
<Abcense id="1" >
<Info>No abcense</Info>
<Picture></Picture>
<Reason></Reason>
<From></From>
<To></To>
<Comment></Comment>
</Abcense>
</FranvaroBesked>
</Person>
</NiceInfo>
Hoppas här finns många duktiga och snälla människor!
/Jonas
toha Medlem sedan dec. 1999 707 inlägg Har nu kollat på det och tog bort den första if-satsen. Ersatte den med en for-each istället och filtrerade ut
alla som hade en frånvaro rapporterad (stavas förresten 'absence' :) ). Ändrade även uttrycket
på andra for-each-satsen också.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<span ID="Info1991" style="position: absolute;">
<xsl:for-each select="/NiceInfo/Person[FranvaroBesked/Abcense/Info = 'No abcense']">
<table border="0" bgcolor="#000000" bordercolor="#000000" cellspacing="0" cellpadding="1">
<tr>
<td>
<table border="0" bgcolor="#f1f1f1" cellspacing="0" cellpadding="0">
<tr bgcolor="#f1f1f1">
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1"><b>Reason</b></td>
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1" width="100"><b>From</b></td>
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1" width="100"><b>To</b></td>
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1"><b>Comment</b></td>
<td bgcolor="#f1f1f1"><a href="java script:hide('Info1991')"> <img border="0" src="http://151.183.8.67/images/common/kryss.gif" /></a></td>
</tr>
<tr bgcolor="#000000">
<td height="2" colspan="9" align="center"></td>
</tr>
<xsl:for-each select="FranvaroBesked/Abcense">
<tr bgcolor="#f1f1f1" height="30">
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1"><xsl:value-of select="Reason"/></td>
<td bgcolor="#f1f1f1"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1"><xsl:value-of select="From"/></td>
<td bgcolor="#f1f1f1"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<xsl:choose>
<xsl:when test="Picture!=''"><td bgcolor="#f1f1f1"><b><xsl:value-of select="To"/></b></td></xsl:when>
<xsl:when test="Picture!=''"><td bgcolor="#f1f1f1"><xsl:value-of select="To"/></td></xsl:when>
<xsl:otherwise><td bgcolor="#f1f1f1">resultA</td></xsl:otherwise>
</xsl:choose>
<td bgcolor="#f1f1f1"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
<td bgcolor="#f1f1f1"><xsl:value-of select="Comment"/></td>
<td bgcolor="#f1f1f1" width="10"><img border="0" src="http://151.183.8.67/images/common/transparant.gif" /></td>
</tr>
<tr>
<td height="1" colspan="9" align="center" bgcolor="#000000"></td>
</tr>
</xsl:for-each>
</table>
</td>
</tr>
</table>
</xsl:for-each>
</span>
</xsl:template>
</xsl:stylesheet>
toha Medlem sedan dec. 1999 707 inlägg Kan rekommendera dig att skaffa XML Cooktop som är ett bra program att skapa xml och xslt-filer. Dessutom har den en ypperlig XPATH-debugger.
C clown Medlem sedan juni 2000 126 inlägg Jag tackar för hjälpen av toha.
Men tyvärr var det inte xsl eller xml filen som var problemet.
Utan det var att Microsoft.XMLDOC objectet inte gick att använda för att göra en screenscrap (alltså hämta min xml & xsl fil).
Nu har jag använt MSXML2.ServerXMLHTTP som funkar utmärkt till just screenscrapping.
Mitt problem är nu att när jag har laddat mitt xsl från en URL
set xsl = Server.CreateObject("MSXML2.ServerXMLHTTP")
xsl.Open "GET", "http://xxxxxxx/xml/nice_info.xsl", False
xsl.send
då skapar jag ett nytt object som jag tänker stoppa in xsl koden i:
set nXSL=Server.CreateObject("Microsoft.XMLDOM")
PROBLEMET:
När jag eftet det kör följande kod:
Response.write xsl.responseText & "<br>" & vbcrlf
if [B]nXSL.load(xsl.responseText)[/B] then
REsponse.write "YES"
else
REsponse.write "NO"
End if
Response.write nXSL.xml & "<br>" & vbcrlf
if not nXSL.parseError.errorCode = 0 then
Response.write nXSL.parseError.errorCode & "<br>" & nXSL.parseError.reason
end if
så skriver den ut NO och följande fel nr:-2147221020 - Invalid syntax
Varför, varför ohhh varför...... måste den göra så här mot mig x(
Hoppas någon allsmäktig här på forumet kan förklara detta för mig?!?!?!?
toha Medlem sedan dec. 1999 707 inlägg Du kan inte använda metoden load för att skicka in xml-data som sträng. load() används för att skicka in en sökväg (eller URL) till den sökta filen. Metoden loadXML används däremot för att skicka in xml i form av en textsträng:
...
If nXSL.loadXML(xsl.responseText) then
...
C clown Medlem sedan juni 2000 126 inlägg YYEEESS!!!
Nu funkar det!!!!
Jag tackar så mycket för den ovärderliga hjälp som herr toha har gett mig!
/Jonas