循环使用XSL中的XML元素
我有这样的XML文件循环使用XSL中的XML元素,xml,loops,xslt,Xml,Loops,Xslt,我有这样的XML文件 <ViewFields> <FieldRef Name="Approval Status" /> <FieldRef Name="Requirement Status" /> <FieldRef Name="Development Status" /> <FieldRef Name="Testing Status" /> </ViewStatus> 我有以下XSL代码来获取FieldRef
<ViewFields>
<FieldRef Name="Approval Status" />
<FieldRef Name="Requirement Status" />
<FieldRef Name="Development Status" />
<FieldRef Name="Testing Status" />
</ViewStatus>
我有以下XSL代码来获取FieldRef值
<xsl:template name="FieldRef_body.Status" match="FieldRef[@Name='ViewFields/FieldRef[1]/@Name']" mode="body">
<xsl:param name="thisNode" select="."/>
<xsl:choose>
<xsl:when test="$thisNode/@*[name()=current()/@Name] = 'Completed'">
<img src="/_layouts/images/IMNON.png" alt="Status: {$thisNode/@Status}"/>
</xsl:when>
<xsl:when test="$thisNode/@*[name()=current()/@Name] = 'In Progress'">
<img src="/_layouts/images/IMNIDLE.png" alt="Status: {$thisNode/@Status}"/>
</xsl:when>
<xsl:otherwise>
<img src="/_layouts/images/IMNBUSY.png" alt="Status: {$thisNode/@Status}"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
我试图通过FieldRef*[x]*循环来一个接一个地获取值,它没有返回任何内容。我想通过循环将FieldRef值分配给@Name变量。这很明显:
match=“FieldRef[@Name='ViewFields/FieldRef[1]/@Name']”
。没有Name
属性将字符串'ViewFields/FieldRef[1]/@Name'
作为字符串值。您很可能希望在这里使用XPath表达式,而不是字符串。使用match=“FieldRef[@Name=ViewFields/FieldRef[1]/@Name]”
Status
属性你的问题没有所有需要正确回答的上下文,但是你应该考虑将你的构造简化成循环的“每个”。
给定xml<ViewFields>
<FieldRef Name="Approval Status" />
<FieldRef Name="Requirement Status" />
<FieldRef Name="Development Status" />
<FieldRef Name="Testing Status" />
</ViewFields>
使用xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="main" match="/">
<xsl:for-each select="/ViewFields/FieldRef">
<xsl:choose>
<xsl:when test="@Name = 'Approval Status'">
<ApprovalStatus/>
</xsl:when>
<xsl:when test="@Name = 'Requirement Status'">
<RequirementStatus/>
</xsl:when>
<xsl:otherwise>
<SomethingElse/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
这可能有点接近你想要的。对我来说似乎很明显:看看我的答案。注意:从问题的定义来看,我仍然不知道您要解决什么任务——您必须提供真正的XML文档,最重要的是,提供确切的所需结果。嗨,Dimitre,请找到下面的链接。这正是我正在处理的场景。在本文中,它可以很好地处理单个状态列,如果列表有多个状态列,我想应用它。请仔细阅读上面的网址,你会明白的。感谢你的时间。@user547077:你为什么认为这篇博文会把事情说清楚?绝对不是。在我看来,您不知道确切的问题是什么,因为您无法描述它。Dimitre,我在下面的链接中发布了确切的输出要求,因为当前线程不接受格式化文本。Jonfen,谢谢你的回复,这里是我正在工作的场景。同样,我必须申请多个栏目。请访问此链接,谢谢