0
기본적으로 여기서 시도하는 것은 XSLT를 사용하여 참조 XML의 요소 값으로 여러 XML을 병합하고 정렬하는 것입니다.여러 XML을 다른 XML의 요소 값으로 정렬
> <xsl:variable name="refXml"
> select="document(concat(replace($refXmlTemp,'^file:',''),'/ref.xml'))"/>
>
>
> <xsl:for-each select="for $x in
> collection(string-join(($inputDir,'select=*.xml;recurse=yes;on-error=fail'),'?'))
> return
> (if (matches($refXml/root/descendant-or-self::issue/id[normalize-space(.)=normalize-space($x/art/item/id)]/number,'\w+')
> and matches($x/art/item/title,'\w+')) then saxon:discard-document($x)
> else())">
> <xsl:sort select="$refXml/root/descendant-or-self::issue/id[normalize-space(.)=/art/item/id]/following-sibling::number"/>
위의 스 니펫은 모든 입력 XML을 병합했지만 정렬되지 않았습니다.
XSLT xsl:sort
함수는 현재 처리중인 XML 내부의 값을 가리키는 경우에만 적용됩니다.
정렬에서 ref.xml을 참조로 사용할 수있는 방법에 대해 조언 해주십시오.
여기 ref.xml 샘플 입력이다 :
<root>
<issue>
<id>wlu-101</id>
<number>1</number>
</issue>
<issue>
<id>wlu-143</id>
<number>2</number>
</issue>
<issue-group>
<issue>
<id>wlu-144</id>
<number>3</number>
</issue>
<issue-group>
<issue>
<id>wlu-185</id>
<number>4</number>
</issue>
</issue-group>
</issue-group>
</root>
Martin 고맙습니다.하지만 내가 제안한 코드를 시도했을 때 예상대로 정렬되지 않았습니다. 마치 XML에 변경 사항이없는 것 같습니다. – Viin
문제점을 정렬 된 순서로 처리하려는 입력 파일을 최소 3 ~ 4 개까지 줄이고 문제를 보여주기 위해 샘플을 최소화하여 표시 할 수 있습니까? 일이 실패한 XSLT 코드 스 니펫에서만 말할 수는 없지만 어떤 키 또는 경로가 잘못되었는지 확인하려면 샘플 데이터를 참조해야합니다. –
woot! 첫 번째 시도에서 작동하지 않는 이유는 내 잘못 인 것 같습니다. 죄송합니다. 그러나 자손 또는 자손이과 함께 작업 할 수 없었던 이유는 어떻게 number 값을 얻는 데 사용할 수 있습니까? 가능하겠습니까? –
Viin