通过xsl将XML转换为HTML会导致以下问题:xsl中的键函数无法提供所需的输出
我正在测试一个XSL代码,但它没有提供所需的输出 XML通过xsl将XML转换为HTML会导致以下问题:xsl中的键函数无法提供所需的输出,html,xml,xslt,Html,Xml,Xslt,我正在测试一个XSL代码,但它没有提供所需的输出 XML 1. 茶叶-乌龙茶 $4.57 1. 2. 豆类-海军蓝,干 $11.96 1. 1. 亚历克西斯圣堂武士 2. 瓦伦丁·麦克卢 3. 比约恩·萨克斯比 XSL 生产线 普罗杜克陶斯瓦尔德昆登酒店 Für jeden Kunden是一家生产veranschaulicht的公司。 这是一个很好的例子。 生产线 生产线 贝施雷邦: Preis: 身份证: 施利森 > 期望输出: ID为1的客户应同时获得这两种产品
1.
茶叶-乌龙茶
$4.57
1.
2.
豆类-海军蓝,干
$11.96
1.
1.
亚历克西斯圣堂武士
2.
瓦伦丁·麦克卢
3.
比约恩·萨克斯比
XSL
生产线
普罗杜克陶斯瓦尔德昆登酒店
Für jeden Kunden是一家生产veranschaulicht的公司。
这是一个很好的例子。
生产线
生产线
-
贝施雷邦:
-
Preis:
-
身份证:
施利森
>
期望输出:
ID为1的客户应同时获得这两种产品,因为他们都使用数字1作为潜在客户。为什么在我将文件转换成html后,输出只显示一个产品
客户说。请考虑以下两个说明:
<xsl:for-each select="key('keyToProduct',id)">
<xsl:if test="key('keyToProduct',id)/lead > 0">
我强烈期望您在
key('keyToProduct',id)
上的两个调用返回相同的结果。但是外部表达式会更改上下文,因此外部表达式中的child::id
与内部表达式中的child::id
不同。将内部调用替换为“”。类似地,对key()
的其他调用请发布一个,而不是断章取义的片段(也不是60多行代码)。还包括expected result.XML:1片茶叶-乌龙茶$4.57 20 2颗豆类-海军蓝,干咖啡$11.96 70 1亚历克西斯圣堂武士2瓦伦丁·麦格卢·希达武德,欢迎来到Stack Overflow。请不要在评论中发布那么多代码。您可以编辑自己的问题,以使用请求的内容更新问题。然而,您似乎通过key('keyToProduct',id)
来解析客户的产品。您的数据中缺少客户和产品的关系。请通过编辑您的问题向我们展示。嘿,非常感谢您的提示。。。我刚刚编辑了我的问题,希望现在有意义。。第一次使用堆栈溢出,很抱歉,
的上下文是什么?
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="keyToProduct" match="product" use="lead"/>
<xsl:template match="/">
<html>
<head>
<title>Produktübersicht</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css"
rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl"
crossorigin="anonymous"/>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-b5kHyXgcpbZJO/tY9Ul7kGkf1S0CWuKcCD38l8YkeH8z8QjE0GmW1gYU5S9FOnJ0"
crossorigin="anonymous"></script>
</head>
<body style="background-color:beige;">
<div class="container">
<h1 style="background-color:beige; color:blue;">Produktauswahl der Kunden</h1>
<h3> Für jeden Kunden wird hier eine Gesamtauflistung aller eingekaufter Produkte veranschaulicht.
Ein Kunde kann sowohl kein Produkt oder aber sehr viele gekauft haben.</h3>
<xsl:for-each select="data/customers/customer">
<div class="card my-2">
<div class="card-header">
<xsl:value-of select="name"/>
</div>
<div calss="card-body">
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-
target="#exampleModal{id}">
<p>Produktübersicht</p>
</button>
<div class="modal fade" id="exampleModal{id}" tabindex="-1" aria-labelledby="exampleModalLabel" aria-
hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Produktübersicht</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<xsl:for-each select="key('keyToProduct',id)">
<xsl:if test="key('keyToProduct',id)/lead > 0">
<ul class="list-group">
<li class="list-group-item">
<p>Beschreibung:
<xsl:value-of select="key('keyToProduct', id)/description"/></p>
</li>
<li class="list-group-item">
<p>Preis:
<xsl:value-of select="key('keyToProduct', id)/price"/></p>
</li>
<li class="list-group-item">
<p>ID:
<xsl:value-of select="key('keyToProduct', id)/id"/></p>
</li>
</ul>
</xsl:if>
</xsl:for-each>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Schliessen</button>
</div>
</div>
</div>
</div>
</div>
</div>
</xsl:for-each>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>>
<xsl:for-each select="key('keyToProduct',id)">
<xsl:if test="key('keyToProduct',id)/lead > 0">