XSLT link 共享相同值并打印 linked 数据的两个元素之间

XSLT link between two elements that share the same value and print the linked data

我已经开始学习 xml/xslt 和 xsl-fo,在做一些基本练习时我遇到了一个小问题。

我正在尝试使用 <category> <priceCategory> 将图书 link 调整到它们的类别价格。不知道要搜索什么,在浏览 Whosebug 时我发现我可以使用一个键,就像这样。

<xsl:key name="link" match="priceCategory" use="priceCategory"/>

并使用

打印值
<xsl:for-each select="bookstore/books/mybook">
<xsl:value-of select="name"/>
<xsl:value-of select="key('link', money/prices/price)/priceCategory"/>
</xsl:for-each>

但到目前为止我没有成功,任何人都可以帮助我提供一些文档或 example/explanation,我想我没有在寻找正确的东西,我找不到适合这种类型的词问题。

这是一个例子XML:

<bookstore>
      <books>
            <mybook>
                  <name>bookname1</name>
                  <pages>350</pages>
                  <category>A</category>
            </book>
            <mybook>
                  <name>bookname2</name>
                  <pages>150</pages>
                  <category>B</category>
            </book>
            <mybook>
                  <name>bookname3</name>
                  <pages>450</pages>
                  <category>B</category>
            </book>
            <mybook>
                  <name>bookname4</name>
                  <pages>550</pages>
                  <category>C</category>
            </book>
      <books>
      <money>
            <prices>
                  <price>50</price>
                  <priceCategory> A </priceCategory>
            </prices>
            <prices>
                  <price>100</price>
                   <priceCategory> B </priceCategory>                  
            </prices>
            <prices>
                  <price>150</price>
                  <priceCategory> C </priceCategory>                 
            </prices>
      </money>
</bookstore>


谢谢:)

我想你想显示类别的价格?如果是,你可以使用这个:

<xsl:key name="link" match="prices" use="priceCategory"/>

当将该键称为“过滤器”时,该键将使用 priceCategory 匹配价格。

<xsl:for-each select="bookstore/books/mybook">
<xsl:value-of select="name"/>
<xsl:value-of select="key('link', category)/price"/>
</xsl:for-each>