当前位置:  开发笔记 > 编程语言 > 正文

有没有一种优雅的方法来使用XSLT添加多个HTML类?

如何解决《有没有一种优雅的方法来使用XSLT添加多个HTML类?》经验,为你挑选了2个好方法。

假设我正在将多项选择测验从任意XML格式转换为HTML.每个选项都将

  • 在结果文档中表示为HTML 标记.对于每一个选择,我想添加一个HTML classcorrect
  • ,如果这样的选择是正确的答案.此外,如果选择是由用户选择的一个,我想补充的一个类submitted
  • .因此,如果选择的是正确的,以及所提交的之一,
  • 应该有一个classcorrect submitted.

    据我所知,空格分隔的属性值不是XML数据模型的一部分,因此无法通过XSLT直接创建.但是,我觉得有一种更好的方法可以做到这一点,而不是为每个可能的类组合用一个条件乱码(在这个例子中这是可以接受的,但在更复杂的场景中是不实用的).

    我怎样才能以优雅的方式解决这个问题?

    期望结果的示例:

    Who trained Obi-Wan Kenobi?

    • Mace Windu
    • Ki-Adi-Mundi
    • Yaddle

    NickFitz.. 11

    首先,XML中的属性值中的空格没有任何问题:粗略地说,属性值规范化将空白字符转换为空格,并在解析文档时将相邻空格折叠到单个空格,但绝对允许使用空格.编辑:有关此内容的更多信息,请参见下文.

    正如你在评论中提到的那样,马修威尔逊的方法未能在可能的值之间包含空格.然而,他的方法基本上是合理的.拼图的最后一块是你不喜欢冗余空间:这些可以通过使用normalize-spaceXPath函数来消除.

    下面的样式表将所有位放在一起 - 请注意,它对输入文档没有任何作用,因此出于测试目的,您可以针对任何XML文档运行它,甚至可以针对自身运行它,以验证输出是否满足您的要求.

    
    
      
      
    
      
      
    
      
      
    
      
    
        
           foo
           bar
        
    
        
           foo
           bar
        
    
        
           foo
           bar
        
    
        
  • 编辑:进一步讨论在属性值中分隔离散组件的空格问题:XML Spec将许多可能的有效构造定义为属性类型,包括IDREFS和NMTOKENS.第一种情况与Names生产相匹配,第二种情况与NMTokens生产相匹配; 这两个产品都被定义为包含多个适当类型的值,由空格分隔.因此,以空格分隔的值列表作为单个属性的值是XML信息集的固有组件.



    1> NickFitz..:

    首先,XML中的属性值中的空格没有任何问题:粗略地说,属性值规范化将空白字符转换为空格,并在解析文档时将相邻空格折叠到单个空格,但绝对允许使用空格.编辑:有关此内容的更多信息,请参见下文.

    正如你在评论中提到的那样,马修威尔逊的方法未能在可能的值之间包含空格.然而,他的方法基本上是合理的.拼图的最后一块是你不喜欢冗余空间:这些可以通过使用normalize-spaceXPath函数来消除.

    下面的样式表将所有位放在一起 - 请注意,它对输入文档没有任何作用,因此出于测试目的,您可以针对任何XML文档运行它,甚至可以针对自身运行它,以验证输出是否满足您的要求.

    
    
      
      
    
      
      
    
      
      
    
      
    
        
           foo
           bar
        
    
        
           foo
           bar
        
    
        
           foo
           bar
        
    
        
  • 编辑:进一步讨论在属性值中分隔离散组件的空格问题:XML Spec将许多可能的有效构造定义为属性类型,包括IDREFS和NMTOKENS.第一种情况与Names生产相匹配,第二种情况与NMTokens生产相匹配; 这两个产品都被定义为包含多个适当类型的值,由空格分隔.因此,以空格分隔的值列表作为单个属性的值是XML信息集的固有组件.


    @Jakob:我在回复结尾处添加了一些关于以空格分隔的值列表的更多细节,这些值列表构成了单个属性值.

    2> Matthew Wils..:

    在我的脑海中,您可以构建一个以空格分隔的列表,其中包括:

  • correct submitted

  • 不应该'cond`是`test`?
  • 推荐阅读
    和谐啄木鸟
    这个屌丝很懒,什么也没留下!
    DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
    Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有