gpt4 book ai didi

xml - XSLT Muenchian 分组忽略特定组

转载 作者:行者123 更新时间:2023-12-03 16:51:49 25 4
gpt4 key购买 nike

我有这样的 XML:

  <DocumentElement>
<ManagerReport>
<UserName>username</UserName>
<ShortTerm>2</ShortTerm>
<LongTerm>4</LongTerm>
<SupervisorContact>ADMIN@COMPANY.COM</SupervisorContact>
<DBName>SQLDB1</DBName>
</ManagerReport>
... more ManagerReport nodes...
</DocumentElement>

我根据 DBName 使用以下键进行分组(Muenchian 分组):
<xsl:key name="groups" match="ManagerReport" use="./DBName"/>

和以下模板:
<xsl:template match="/DocumentElement">
<HTML>
<BODY>
<xsl:apply-templates select="ManagerReport[generate-id() = generate-id(key('groups', ./DBName)[1])]"/>
</BODY>
</HTML>
  <xsl:template match ="ManagerReport">
<TEXT>
The following employees have documents checked out in <xsl:value-of select="./DBName"/>:
</TEXT>
<BR></BR>
<TABLE Border = "1">
<TR>
<TH>Username</TH>
<TH>Short Term</TH>
<TH>Medium Term</TH>
<TH>Long Term</TH>
</TR>
<xsl:for-each select="key('groups',./DBName)">
<xsl:if test="./SupervisorContact = $mgr">
<TR>
<TD>
<xsl:value-of select ="./UserName"/>
</TD>
<TD>
<xsl:call-template name ="ApplyTemplatesOrDefault">
<xsl:with-param name="elem" select="./ShortTerm"/>
<xsl:with-param name="default">0</xsl:with-param>
</xsl:call-template>
</TD>
<TD>
<xsl:call-template name ="ApplyTemplatesOrDefault">
<xsl:with-param name="elem" select="./MedTerm"/>
<xsl:with-param name="default">0</xsl:with-param>
</xsl:call-template>
</TD>
<TD>
<xsl:call-template name ="ApplyTemplatesOrDefault">
<xsl:with-param name="elem" select="./LongTerm"/>
<xsl:with-param name="default">0</xsl:with-param>
</xsl:call-template>
</TD>
</TR>
</xsl:if>
</xsl:for-each>
</TABLE>
<BR></BR>
<BR></BR>

此模板的此结果是每个数据库的表格,其中包含相应管理器报告节点中的信息。 mgr值作为参数传入,以便仅打印 ManagerReport对应于特定主管的值。

这很好用,除了如果没有对应于特定 SupervisorContact 的节点这一事实。对于给定的 DBName ,打印一个空表(只是标题)。我不想打印这些特定的表格。

我能想象的唯一方法是在 match 中添加一个谓词。在 groups key ,这是严格不允许的。我怎样才能摆脱这些“空”表?

请注意我正在使用并且必须使用 XSL 1.0 .

最佳答案

看来您可以将条件放在 xsl:apply-templates 上通过替换 <xsl:apply-templates select="ManagerReport[generate-id() = generate-id(key('groups', ./DBName)[1])]"/><xsl:apply-templates select="ManagerReport[generate-id() = generate-id(key('groups', ./DBName)[1]) and key('groups', DBName)[SupervisorContact = $mgr]]"/> .

关于xml - XSLT Muenchian 分组忽略特定组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44573439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com