0
指定されたすべてのxml要素の日付と数値の差を計算しようとしていますが、xml内の最後の要素のみを計算して取得します。Template/XSLTとjavaScript 1.0 2つの値の差が正しく動作しない
例:私は2つの誕生日を持っていますが、すべての計算で2番目の誕生日だけを収集します。
主な目標は、すべての人の2日の日数の差を表示することです。以下
はXSLTコードおよびXMLコードである:
XSLT:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Sample JS</title>
<script>
window.onload = function() {
var all = document.querySelectorAll('.date');
var all2 = document.querySelectorAll('.date2');
for(element of all) {
date = new Date(element.innerHTML);
}
for(element of all2) {
date2 = new Date(element.innerHTML);
difference = Math.abs(date2.getTime() - date.getTime());
days = Math.ceil(difference/(1000 * 3600 * 24));
element.innerHTML = days;
}
var numb = document.querySelectorAll('.num1');
var numb2 = document.querySelectorAll('.num2');
for(element of numb) {
num1 = element.innerHTML;
}
for(element of numb2) {
num2 = element.innerHTML;
difference = num2 - num1;
element.innerHTML = difference;
}
}
</script>
</head>
<body>
<xsl:apply-templates select="people/person" />
</body>
</html>
</xsl:template>
<xsl:template match="person">
<p>Birthday: <span class="date"><xsl:value-of select="dob/text()"/></span></p>
<p>Death day: <xsl:value-of select="dod/text()"/></p>
<p>Difference: <span class="date2"><xsl:value-of select="dod/text()"/></span></p>
<p>
<xsl:value-of select="num2/text()"/> -
<span class="num1"><xsl:value-of select="num/text()"/></span> =
<span class="num2"><xsl:value-of select="num2/text()"/></span>
</p>
</xsl:template>
</xsl:stylesheet>
XML
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="js-example.xsl"?>
<people>
<person>
<name>John</name>
<dob>2017-09-01</dob>
<dod>2017-09-08</dod>
<num>1</num>
<num2>30</num2>
</person>
<person>
<name>Sarah</name>
<dob>2017-09-10</dob>
<dod>2017-09-07</dod>
<num>10</num>
<num2>20</num2>
</person>
</people>
出力:ループで
Birthday: 2017-09-01
Death day: 2017-09-08
Difference: 2
30 - 1 = 20
Birthday: 2017-09-10
Death day: 2017-09-07
Difference: 3
20 - 10 = 10
偉大な説明、ありがとう! – mmm