webForumDet fria alternativet

xsl hjälp

XML

5 svar · 453 visningar · startad av clown

Medlem sedan juni 2000126 inlägg
Frågan#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

Medlem sedan dec. 1999707 inlägg
#2

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>
Medlem sedan dec. 1999707 inlägg
#3

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.

Medlem sedan juni 2000126 inlägg
#4

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?!?!?!?

Medlem sedan dec. 1999707 inlägg
#5

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
...
Medlem sedan juni 2000126 inlägg
#6

YYEEESS!!!
Nu funkar det!!!!

Jag tackar så mycket för den ovärderliga hjälp som herr toha har gett mig!

/Jonas

292 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
161 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)