제목, 가격, 저자, 추가 가격, 아티스트, 국가 등의 속성을 가진 책 목록이있는 XML이 있습니다. XML은 아래와 같습니다. <?xml version="1.0" encoding="UTF-8"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <additionalprice>12.90</additionalprice> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</company> <price>9.90</price> <additionalprice>10.90</additionalprice> <year>1988</year> </cd>
xslt 3.0에서 accumulator를 사용하면 필요하지 않습니다.
그래서 내가 HTML를 얻기 위해 XML에 적용되는 XSLT 3.0을 기록 할
에 . 누적기를 사용하여 카탈로그의 총 도서 수를 얻고 싶습니다. 더 나은 방법이 있긴하지만, 저는 연습용으로 축약기를 사용하고 열이 제목, 저자 및 총 가격 인 책이 들어있는 테이블 끝에 총계를 인쇄하려고했습니다. 제목과 저자를 채우기 위해, 나는 for-each를 사용했다. 총 가격 = price + additionalPrice. 총 가격을 제출할 때 반복을 사용하고 싶습니다. 아무도 이걸로 나를 도울 수 있을까. 내 불완전 스타일 시트는 다음과 같습니다
이`<?xml version="3.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="2">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
<th style="text-align:left">Total Price</th>
</tr>
<xsl:accumulator name="total" as="xs:integer" initial-value="0" streamable="no">
<xsl:accumulator-rule match="title" select="$value+1"/>
</xsl:accumulator>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
<tr bgcolor="#FFA500">
<td> Total number of Books </td>
<td> <xsl:value-of select="accumulator-before('total')"/</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>`
난 당신이 당신이로 사용이 의미 xsl:accumulator
이 선언이라고 볼 다음 사양 https://www.w3.org/TR/xslt-30/#accumulator-declaration 보면
에 적용 할 것을 선언합니다. 이유를 모르겠다.
XSLT 3을 사용하려면 XSLT 3 프로세서를 사용해야합니다. 연결된 도구는 하나가 아닙니다. 올해의 최종 XSLT 3 사양과 일치하는 것으로 알려진 XSLT 3 구현은 Saxon 9.8 및 Altova 2017 R3 또는 2018이므로 XSLT 3을 사용하려면이 중 하나를 시도해 보시기 바랍니다. Saxon 9.8 HE with 당신의 입력이 잘 형성되고 완성되도록 수정되었고, 완전한'xsl : stylesheet' 내의 나의 발췌 문장은 'accumulator-after ('total ')'에 대해'2'를 출력합니다. Altova XMLSpy 2018처럼. –
나는 코드를 편집했습니다. 스 니펫을 사용하여 스타일 시트의 본문에 대한 관련 코드 만 갖는 이전 스 니펫으로 인해 문제가 발생한 경우를 대비하여 전체 스타일 시트로 변환했습니다. –