나는 다음 코드xslt 결과 집합의 요소 만 마지막 요소가 아닙니까?
<xsl:for-each select="book">
<xsl:value-of select="title"/><xsl:if test="position() != last()">,</xsl:if>
</xsl:for-each>
나는 그것이 쉼표로 구분 된 책 제목의리스트가되고 싶어요에게 있습니다.
목록에 책이 없을 때 결과가 정확합니다. 둘 이상의 책이있을 때도 정확합니다.
그러나 책이 정확히 하나만 있으면 끝에 쉼표가 인쇄됩니다.
마지막 요소 인 경우 쉼표 만 인쇄하도록 조건을 변경하면 책이 하나만있는 경우 쉼표가 인쇄되지 않습니다.
그래서 마지막 요소로 처리되지 않는 요소가 하나만있는 것처럼 보입니다. 이 문제를 어떻게 처리 할 수 있습니까?
샘플 XML : 거기 목록에 두 권의 책은, 내가 두 번째 항목을 삭제하면
My book, Another book
, 나는
를 얻을 수이<booklist>
<book>
<title>My book</title>
<author>Some author</author>
</book>
<book>
<title>Another book</title>
<author>Another author</author>
</book>
</booklist>
과 같이 보입니다
My book,
편집 :
나는 문제를 발견했다. <xsl:apply-templates>
을 사용하여 데이터 집합을 선택한 다음 각 책에 대한 다른 템플릿 내부에서 위치 확인을 수행하고있었습니다. 그러나 last()
은 필터링 된 하위 집합이 아니라 원래 데이터 집합을 나타냅니다.
당신이 사용하는 XML을 공유 할 수 있습니까? 귀하의 변형이 올바른 것 같습니다. – Satyajit