Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XSLT模板不工作_C#_Xslt - Fatal编程技术网

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>

尽管在各种网站上阅读了大量关于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>
      <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听起来像是一个无关的问题…?是的,对不起,我应该提出另一个问题,我会这样做。谢谢你,马克,你的解决方案对我有用。