xslt 1.0 항목을 그룹화하는 데 어려움이 있습니다. 나는 아래와 같은 소스 XML이 :xslt 1.0의 3 개 항목을 모두 그룹화합니다.
<client name="client A">
<project name = "project A1"/>
<project name = "project A2"/>
<project name = "project A3"/>
<project name = "project A4"/>
</client>
<client name="client B">
<project name = "project B1"/>
<project name = "project B2"/>
</client>
<client name="client C">
<project name = "project C1"/>
<project name = "project C2"/>
<project name = "project C3"/>
</client>
내가 모든 프로젝트를 선택하고자으로 정렬하고 줄을 다음 그룹 아래의 예에서와 같이 하나의 boundle의 모든 3 프로젝트 :
<boundle>
<project name="project A1">
<project name="project A2">
<project name="project A3">
</boundle>
<boundle>
<project name="project A4">
<project name="project B1">
<project name="project B2">
</boundle>
<boundle>
<project name="project C1">
<project name="project C2">
<project name="project C3">
</boundle>
현재 경계 태그를 열고 나중에 닫는 데 사용하고 있습니다. 더 나은 해결책에 대해 생각해 볼 수 있습니까?
반복을 피하기 때문에이 솔루션이 마음에 듭니다. 궁금한 점이 있다면, 기본적으로 모든 프로젝트를 반복하고 매 3 번째 프로젝트마다 처음 프로젝트를 복사하는 대신 마지막 세 개의 프로젝트를 복사하는 것입니다. – OregonGhost
이것은 훨씬 간단해질 수 없습니다. 당신은''xsl : apply-templates select = "$ allProjects [position() mod 3 = 1]"...'을하고 교환으로''을 제거 할 수 있습니다. 그러나 처리면에서 이것은 거의 같은 것입니다 . 또한, 내가 한 것처럼, ''템플릿 자체가 포함되어 있습니다. XSL 키의 잠재적 인 사용에 관해서 : 프로젝트의 연속적인 범위가 없기 때문에,'position() mod x'는 원하는 결과를 만들어 내지 못할 것입니다. 그 외에도 위의 매개 변수는 XSL 키를 하드 코딩해야합니다. –
Tomalak
이 맞습니다. 내 솔루션 작업 (현재 삭제됨)에서 번들의 두 번째 또는 세 번째 프로젝트가 다음 또는 하나의 클라이언트 노드에 추가되는 다른 에지 상황을 다루는 것은 절망적으로 복잡해집니다. – Richard