Hej, <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" Är det där två olika XSL-mallar du prövar med en i taget eller använder du båda? Ja, precis, jag använder båda - den ena anropar den andra. Den senare har jag dock förenklat lite mha ett extension-objekt: En sak observerar jag och det är att du inte anger någon namnrymd för HTML-koden. Pröva att lägga till Tack för dina tips Per, men tyvärr lyckas jag inte med att få bort alla xmlns. Har börjat titta på "alternativ". Prövade bl.a. med blandad framgång att överrida metoder i XmlTextWriter (som jag använder tillsammans med XslTransform). Enklast, om än inte särskilt elegant, är kanske ändå att använda ett regulärt uttryck för att "städa" resultatet: XSL-transformering och namnrymdstjaffs i output
Här kommer förmodligen en larvigt enkel fråga. Jag försöker skapa en simpel html tabell utifrån ett xml-dokument (mha XslTransform i .NET). Problemet är att jag får med en massa oönskat namnrymdstjaffs i resultatet:
<table xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<tr xmlns:user="http://www.xxx.com/abc">...</tr>
<tr xmlns:user="http://www.xxx.com/abc">...</tr>
...
</table>
Jag gissar att det finns något enkelt sätt att bli av med dessa xmlns...Sv:XSL-transformering och namnrymdstjaffs i output
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
version="1.0">
<xsl:template match="/XML/Data">
<table>
<xsl:apply-templates select="branchcode" />
<xsl:apply-templates select="creditcurrencycode" />
</table>
</xsl:template>
<xsl:include href="Details.xsl" />
</xsl:stylesheet>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://www.xxx.com/abc"
version="1.0">
<xsl:output method="html" />
<xsl:template match="//Data/*">
<tr>
<xsl:variable name="name" select="user:MakeResourceId(name())" />
<td><xsl:value-of select="//Resource/@value[../@localeid='0x409' and ../../@constant=$name]"/></td>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:template>
<msxsl:script language="CSharp" implements-prefix="user">
<![CDATA[
public string MakeResourceId(string name)
{
return "LBL_" + name.ToUpper();
}
]]>
</msxsl:script>
</xsl:stylesheet>Sv: XSL-transformering och namnrymdstjaffs i output
Hur ser ditt XML-källdokument ut?Sv:XSL-transformering och namnrymdstjaffs i output
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:helper="urn:helper"
version="1.0">
<xsl:output method="html" />
<xsl:param name="lcid"/>
<xsl:template match="//Data/*">
<tr>
<td><xsl:value-of select="helper:GetLanguageString(name())"/></td>
<td><xsl:value-of select="."/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
Mitt data kan se ut så här:
<XML>
<Data>
<transactionid>212</transactionid>
<branchcode>4030</branchcode>
<creditcurrencycode>QAR</creditcurrencycode>
...
</Data>
</XML>Sv: XSL-transformering och namnrymdstjaffs i output
<b>xmlns="http://www.w3.org/1999/xhtml"</b> i alla stylesheet-element.
Det skall påpekas att jag inte har någon erfarenhet av XslTransform, så jag vet inte om det är dess funktioner som är ointelligenta eller om problemen helt ligger i användningen.Sv:XSL-transformering och namnrymdstjaffs i output
result = Text.RegularExpressions.Regex.Replace(result, "\sxmlns(?::[\w]+)?=""[^""]*""", "")