C# XSLT模板不工作
尽管在各种网站上阅读了大量关于XSLT模板的文档,但我无法让XSLT与我的C#代码一起工作 这是我的工作XSLT文件:C# XSLT模板不工作,c#,xslt,C#,Xslt,尽管在各种网站上阅读了大量关于XSLT模板的文档,但我无法让XSLT与我的C#代码一起工作 这是我的工作XSLT文件: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <HTML> <BODY> <TABLE BORDER="2"> <TR>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<BODY>
<TABLE BORDER="2">
<TR>
<TD>First name</TD>
<TD>Last name</TD>
<TD>Age</TD>
</TR>
<xsl:for-each select="ArrayOfUserModel/UserModel">
<TR>
<TD><xsl:value-of select="FirstName"/></TD>
<TD><xsl:value-of select="LastName"/></TD>
<TD><xsl:value-of select="Age"/></TD>
</TR>
</xsl:for-each>
</TABLE>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
多谢各位 语法
select="user"
表示“查找所有名为“user”的子元素并应用其匹配模板”。没有“用户”元素,因此没有输出
调用命名模板,或应用生成匹配项的选择
例如,您可以:
<xsl:apply-templates select="ArrayOfUserModel/UserModel"/>
并更改模板以匹配UserModel:
<xsl:template match="UserModel">
尝试避免对每个
使用,并一直使用模板:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<BODY>
<xsl:apply-templates />
</BODY>
</HTML>
</xsl:template>
<xsl:template match="ArrayOfUserModel">
<TABLE BORDER="2">
<TR>
<TD>First name</TD>
<TD>Last name</TD>
<TD>Age</TD>
</TR>
<xsl:apply-templates />
</TABLE>
</xsl:template>
<xsl:template match="UserModel">
<TR>
<TD><xsl:value-of select="./FirstName" /></TD>
<TD><xsl:value-of select="./LastName" /></TD>
<TD><xsl:value-of select="./Age" /></TD>
</TR>
</xsl:template>
</xsl:stylesheet>
名字
姓
年龄
请注意,通过拆分与文档正文有关的输出部分,xslt的一般列表布局(表)和列表项将变得更可读、更易于维护。最有可能的是,在问题中未显示的XML文档中,作为ArrayOfUserModel
子元素的UserModel
元素没有用户
子元素
这就是为什么这一行:
<xsl:apply-templates select="user"/>
与:
<xsl:for-each select="ArrayOfUserModel/UserModel">
<xsl:apply-templates select="user"/>
</xsl:for-each>
<xsl:apply-templates select="ArrayOfUserModel/UserModel"/>
<xsl:template match="user">
<xsl:template match="UserModel">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<BODY>
<TABLE BORDER="2">
<TR>
<TD>First name</TD>
<TD>Last name</TD>
<TD>Age</TD>
</TR>
<xsl:apply-templates select="ArrayOfUserModel/UserModel"/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="UserModel">
<TR>
<TD><xsl:value-of select="FirstName"/></TD>
<TD><xsl:value-of select="LastName"/></TD>
<TD><xsl:value-of select="Age"/></TD>
</TR>
</xsl:stylesheet>
和更改:
<xsl:for-each select="ArrayOfUserModel/UserModel">
<xsl:apply-templates select="user"/>
</xsl:for-each>
<xsl:apply-templates select="ArrayOfUserModel/UserModel"/>
<xsl:template match="user">
<xsl:template match="UserModel">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<BODY>
<TABLE BORDER="2">
<TR>
<TD>First name</TD>
<TD>Last name</TD>
<TD>Age</TD>
</TR>
<xsl:apply-templates select="ArrayOfUserModel/UserModel"/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="UserModel">
<TR>
<TD><xsl:value-of select="FirstName"/></TD>
<TD><xsl:value-of select="LastName"/></TD>
<TD><xsl:value-of select="Age"/></TD>
</TR>
</xsl:stylesheet>
至:
<xsl:for-each select="ArrayOfUserModel/UserModel">
<xsl:apply-templates select="user"/>
</xsl:for-each>
<xsl:apply-templates select="ArrayOfUserModel/UserModel"/>
<xsl:template match="user">
<xsl:template match="UserModel">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<BODY>
<TABLE BORDER="2">
<TR>
<TD>First name</TD>
<TD>Last name</TD>
<TD>Age</TD>
</TR>
<xsl:apply-templates select="ArrayOfUserModel/UserModel"/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="UserModel">
<TR>
<TD><xsl:value-of select="FirstName"/></TD>
<TD><xsl:value-of select="LastName"/></TD>
<TD><xsl:value-of select="Age"/></TD>
</TR>
</xsl:stylesheet>
完整代码变为:
<xsl:for-each select="ArrayOfUserModel/UserModel">
<xsl:apply-templates select="user"/>
</xsl:for-each>
<xsl:apply-templates select="ArrayOfUserModel/UserModel"/>
<xsl:template match="user">
<xsl:template match="UserModel">
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<HTML>
<BODY>
<TABLE BORDER="2">
<TR>
<TD>First name</TD>
<TD>Last name</TD>
<TD>Age</TD>
</TR>
<xsl:apply-templates select="ArrayOfUserModel/UserModel"/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="UserModel">
<TR>
<TD><xsl:value-of select="FirstName"/></TD>
<TD><xsl:value-of select="LastName"/></TD>
<TD><xsl:value-of select="Age"/></TD>
</TR>
</xsl:stylesheet>
名字
姓
年龄
现在,我试图使用一个与主xsl文件位于同一本地文件夹的usermodel.xsl文件,但VC用法语说:“URI外部解析是禁止的”左右。@virrea听起来像是一个无关的问题…?是的,对不起,我应该提出另一个问题,我会这样做。谢谢你,马克,你的解决方案对我有用。