我希望有人能帮我解决这个问题,我一直在绞尽脑汁想弄清楚——今天和昨天的大部分时间都在阅读stackoverflow,尝试一些东西,但还没有。
这是我的xml,它是从cms生成的。
<Navigation Type="Children" Name="LeftNavigation" label="Left Navigation">
<Page ID="x13" URL="x13.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="Cars" />
<Page ID="x12" URL="x12.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-1">
<Page ID="x27" URL="x27.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-2" />
<Page ID="x28" URL="x28.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-3" />
<Page ID="x31" URL="x31.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-4" />
</Page>
-
<Page ID="x14" URL="x14.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="Books">
<Page ID="x32" URL="x32.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-2" />
<Page ID="x33" URL="x33.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-3" />
<Page ID="x34" URL="x34.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-4" />
<Page ID="x35" URL="x35.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-5" />
<Page ID="x36" URL="x36.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-6" />
<Page ID="x37" URL="x37.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-7" />
<Page ID="x38" URL="x38.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-8" />
<Page ID="x39" URL="x39.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-9" />
<Page ID="x40" URL="x40.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-10" />
<Page ID="x41" URL="x41.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-11" />
</Page>
<Page ID="x15" URL="x15.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="Clothes" />
-
<Page ID="x47" URL="x47.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="Toys">
<Page ID="x49" URL="x49.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-1" />
<Page ID="x48" URL="x48.xml" Schema="ContentPage" Locale="en-us" CategoryIds="" Name="subsection-2" />
</Page>
</Navigation>
我要做的是创建一个左导航栏,它只列出父导航栏的子导航栏或兄弟导航栏。
所以我一直在尝试这样做:
<xsl:variable name="currentPage">
<xsl:value-of select="//ContentPage/@ID"/>
</xsl:variable>
首先,我创建了一个变量,它可以找出我在哪里,并获得属性ID。
<xsl:template name="navigation">
<ul id="oc-left-nav">
<xsl:apply-templates select="//@ID='$currentPage' | parent::()" />
</ul>
</xsl:template>
所以这部分是我想说的:选择页面的ID等于我的变量或者如果你是兄弟姐妹,那么列出所有兄弟姐妹在父。但是正如你所看到的,我不知道怎么写。
<xsl:template match="//@ID[.='$currentPage'] | parent::()">
<xsl:for-each select="Page">
<li class="oc-navlink">
<a>
<xsl:attribute name="href">
<xsl:value-of select="@URL"/>
</xsl:attribute>
<xsl:value-of select="@Name"/>
</a>
</li>
</xsl:for-each>
</xsl:template>
在一天结束的时候,我需要一个相对于你是哪个父页面的后代的所有孩子的动态列表。好吧,希望如此。我会继续努力的。
我不明白你想做什么,但我当然可以为你做一些观察:
你说"所以这部分是我试图说:选择页面…"
后面跟着一个模板匹配,它返回@ID节点…
xsl:template match="//@ID ..
对"@ID"属性的子"Page"元素执行for-each操作肯定不会返回任何结果。@ID属性没有子属性。
第二,将变量currentPage的值设置为//ContentPage/@ID。我甚至没有在示例XML中看到元素ContentPage。这个变量应该是空的,除非你没有在这里显示所有相关的东西。
我想我知道你想要输出什么,但是也许你可以发布你期望得到的,这样我们就不用猜测了。