是否可以将web.sitemap视为表格?

时间:2014-10-21 21:53:01

标签: xml xslt web.sitemap

是否可以使用XSLT将嵌套的web.sitemap显示到单个非嵌套表中?

在网上浏览,我发现了一些XSLT代码,它将web.sitemap文件转换为嵌套的无序列表(UL)。将其转换为表标记,我得到的是一组嵌套表。

我知道我“做错了。”有人知道如何将其作为单个表呈现 - 而不是嵌套吗?

对于那些想知道我为什么要问这个以及我想要做什么的人,我正在尝试填写客户端请求来读取站点地图但是将其作为表而不是作为asp.navigation控件呈现(这是我的默认动作)。如果有更好的方法来做到这一点,我愿意接受各种想法。这是我基于我通过网络搜索找到的最佳理论。

感谢您的任何想法。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:map="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" exclude-result
    prefixes="map">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>

<xsl:template name="mapNode" match="map:siteMap">
    <table>
        <xsl:apply-templates/>
    </table>
</xsl:template>

<xsl:template match="map:siteMapNode">
<tr>
    <td style="border:thin solid red;">
        <a>
            <xsl:attribute name="href">
                <xsl:value-of select="@url"/>
            </xsl:attribute>
            <xsl:value-of select="@title"/>
        </a>

        <xsl:if test="map:siteMapNode">
            <xsl:call-template name="mapNode"/>
        </xsl:if>
    </td>
    <td style="border:thin solid red;">
        <xsl:value-of select="@description"/>
    </td>
</tr>
</xsl:template>
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:1)

我在这里大多猜测,但我认为你想要这样的东西:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:map="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" 
exclude-result-prefixes="map">
<xsl:output method="xml" omit-xml-declaration="yes" version="1.0" encoding="utf-8" indent="yes"/>

<xsl:template match="/map:siteMap">
    <table>
        <xsl:apply-templates select="map:siteMapNode"/>
    </table>
</xsl:template>

<xsl:template match="map:siteMapNode">
    <tr>
        <td>
            <a href="{@url}"><xsl:value-of select="@title"/></a>
        </td>
        <td>
            <xsl:value-of select="@description"/>
        </td>
    </tr>
    <xsl:apply-templates select="map:siteMapNode"/>
</xsl:template>

</xsl:stylesheet>

应用于以下示例输入

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
  <siteMapNode title="Home" description="Home" url="~/default.aspx">
    <siteMapNode title="Products" description="Our products" url="~/Products.aspx">
      <siteMapNode title="Hardware" description="Hardware choices" url="~/Hardware.aspx"/>
      <siteMapNode title="Software" description="Software choices" url="~/Software.aspx"/>
    </siteMapNode>
    <siteMapNode title="Services" description="Services we offer" url="~/Services.aspx">
      <siteMapNode title="Training" description="Training classes" url="~/Training.aspx"/>
      <siteMapNode title="Consulting" description="Consulting services" url="~/Consulting.aspx"/>
      <siteMapNode title="Support" description="Supports plans" url="~/Support.aspx"/>
    </siteMapNode>
  </siteMapNode>
</siteMap>

生成结果

<table>
   <tr>
      <td>
         <a href="~/default.aspx">Home</a>
      </td>
      <td>Home</td>
   </tr>
   <tr>
      <td>
         <a href="~/Products.aspx">Products</a>
      </td>
      <td>Our products</td>
   </tr>
   <tr>
      <td>
         <a href="~/Hardware.aspx">Hardware</a>
      </td>
      <td>Hardware choices</td>
   </tr>
   <tr>
      <td>
         <a href="~/Software.aspx">Software</a>
      </td>
      <td>Software choices</td>
   </tr>
   <tr>
      <td>
         <a href="~/Services.aspx">Services</a>
      </td>
      <td>Services we offer</td>
   </tr>
   <tr>
      <td>
         <a href="~/Training.aspx">Training</a>
      </td>
      <td>Training classes</td>
   </tr>
   <tr>
      <td>
         <a href="~/Consulting.aspx">Consulting</a>
      </td>
      <td>Consulting services</td>
   </tr>
   <tr>
      <td>
         <a href="~/Support.aspx">Support</a>
      </td>
      <td>Supports plans</td>
   </tr>
</table>

呈现为:

enter image description here