Xslt 当xml值可以包含值和引用时,显示xml值

Xslt 当xml值可以包含值和引用时,显示xml值,xslt,reference,display,Xslt,Reference,Display,当xml值既可以包含值又可以包含引用时,如何显示它 例如,我尝试列出生成的XML中的特征。第一个条目包含格式为“text”的数据。第二个值也是,但它作为前一个特征的参考列出 <characteristicTypes> <characteristictype> <number>1</number> <format>TEXT</format> <name>Address</name&

当xml值既可以包含值又可以包含引用时,如何显示它

例如,我尝试列出生成的XML中的特征。第一个条目包含格式为“text”的数据。第二个值也是,但它作为前一个特征的参考列出

<characteristicTypes>
  <characteristictype>
    <number>1</number>
    <format>TEXT</format>
    <name>Address</name>
  </characteristictype>
  <characteristictype>
    <number>2</number>
    <format reference="../../characteristictype/format"/>
    <name>Description</name>
  </characteristictype>
<characteristicTypes>

1.
正文
地址
2.
描述
我想将这两个项目展示如下:

  • 特征1
    • 格式:文本
    • 姓名:地址
  • 特征2
    • 格式:文本
    • 姓名:Description
  • 当我使用

    <xsl:value-of select="format"/>
    
    
    
    第一个条目包含正确的值,但第二个条目为空:

  • 特征1
    • 格式:文本
    • 姓名:地址
  • 特征2
    • 格式:
    • 姓名:Description

  • 你可以试试这样的东西-

    <xsl:value-of select="preceding-sibling::characteristicTypes/characteristictype/format"/>
    
    
    

    使用前一个同级节点将提供对前一个节点的访问。

    您可以尝试以下操作-

    <xsl:value-of select="preceding-sibling::characteristicTypes/characteristictype/format"/>
    
    
    

    使用前面的同级将提供对前面节点的访问。

    您的XML真的包含需要计算的XPath表达式吗?如果是这样的话,您将需要一个支持XSLT 3.0或某种类型的
    evaluate()
    扩展函数的处理器还要注意,给定的表达式不仅指
    文本
    ,还指它本身。您的XML真的包含需要计算的XPath表达式吗?如果是这样的话,您将需要一个支持XSLT 3.0或某种类型的
    evaluate()
    扩展函数的处理器还要注意,给定表达式不仅指
    文本
    ,还指其自身。