대용량 XML 파일을 XSLT 변환을 사용하여 100 또는 1000처럼 상수를 설정 한 레코드 카운터에 따라 여러 파일로 분할해야한다는 요구 사항이 있습니다.XSLT 1.0을 사용하여 XML 파일을 카운터 값으로 사용하여
특정 노드 값은 전체 파일에 대해 한 번만 사용할 수 있습니다. 특정 노드 값은 각 파일에 그대로 복사해야합니다. Like 헤더 정보 또는 purchaseOrder 번호
xslt 1.0 버전을 사용해야합니다. 내 중간 도자기 시스템에 2.0 지원 파서가 없습니다. 예제 파일은 다음과 같습니다. 위의 파일에서
<?xml version="1.0" encoding="UTF-8"?>
<ns0:HeaderOffile xmlns:ns0="http://cdpa.com/xix/ALS">
\t <EPBody>
\t \t <EList>
\t \t \t <AgEvent>
\t \t \t \t <parentId>77777</parentId>
\t \t \t \t <childId>
\t \t \t \t \t <epic>400</epic>
\t \t \t \t \t <epic>401</epic>
\t \t \t \t </childId>
\t \t \t \t <extensions>
\t \t \t \t \t <SExtension>
\t \t \t \t \t \t <epic>400</epic>
\t \t \t \t \t \t <NameValue>
\t \t \t \t \t \t \t <PName>SERVICE</PName>
\t \t \t \t \t \t \t <PValue>03</PValue>
\t \t \t \t \t \t </NameValue>
\t \t \t \t \t </SExtension>
\t \t \t \t \t <OneTimeForFile>
\t \t \t \t \t \t <NameValue>
\t \t \t \t \t \t \t <PName>ZFIELD1</PName>
\t \t \t \t \t \t \t <PValue>ROYAL</PValue>
\t \t \t \t \t \t </NameValue>
\t \t \t \t \t \t <NameValue>
\t \t \t \t \t \t \t <ParameterName>ZFIELD2</ParameterName>
\t \t \t \t \t \t \t <PValue>GOLD</PValue>
\t \t \t \t \t \t </NameValue>
\t \t \t \t \t </OneTimeForFile>
\t \t \t \t </extensions>
\t \t \t </AgEvent>
\t \t \t <AgEvent>
\t \t \t \t <parentId>88888</parentId>
\t \t \t \t <childId>
\t \t \t \t \t <epic>300</epic>
\t \t \t \t \t <epic>301</epic>
\t \t \t \t </childId>
\t \t \t \t <extensions>
\t \t \t \t \t <SExtension>
\t \t \t \t \t \t <epic>300</epic>
\t \t \t \t \t \t <NameValue>
\t \t \t \t \t \t \t <PName>SERVICE</PName>
\t \t \t \t \t \t \t <PValue>03</PValue>
\t \t \t \t \t \t </NameValue>
\t \t \t \t \t </SExtension>
\t \t \t \t </extensions>
\t \t \t </AgEvent>
\t \t \t <AgEvent>
\t \t \t \t <parentId>99999</parentId>
\t \t \t \t <childId>
\t \t \t \t \t <epic>200</epic>
\t \t \t \t \t <epic>201</epic>
\t \t \t \t </childId>
\t \t \t \t <extensions>
\t \t \t \t \t <SExtension>
\t \t \t \t \t \t <epic>200</epic>
\t \t \t \t \t \t <NameValue>
\t \t \t \t \t \t \t <PName>SERVICE</PName>
\t \t \t \t \t \t \t <PValue>03</PValue>
\t \t \t \t \t \t </NameValue>
\t \t \t \t \t </SExtension>
\t \t \t \t </extensions>
\t \t \t </AgEvent>
\t \t </EList>
\t </EPBody>
</ns0:HeaderOffile>
OneTimeForFile 노드는 입력 파일에서 한 번만 사용할 수 있으므로 첫 번째 AGEvent 노드에 파일 당 한 번 복사해야합니다.
완전한 XSLT 스크립트를 작성하고 궁금한 점이 있으면 알려주세요. 웹 검색으로 문제를 해결할 수있는 방법을 찾았습니다.
나는 post here으로 시도했다! 그러나 달성되지 않았습니다. 귀중한 시간을 매우 높이 평가합니다. 미리 감사드립니다.
XSLT 1.0에서는 입력을 여러 출력 파일로 분할 할 수 없습니다. 프로세서에서 지원하는 경우 EXSLT'exsl : document' 확장 명령어를 사용할 수 있습니다. 그렇지 않으면 매개 변수를 100 씩 올릴 때마다 호출 응용 프로그램에 다중 변환을 수행하도록 지시해야합니다. 그러면 호출 응용 프로그램에 총 AGEvent 노드 수를 전달하는 방법을 찾아야합니다. - 추신 연결된 질문에 아무런 연관이 없습니다. –
감사합니다. 나는 그것을 해결했다. – Nag