2010-08-09 3 views
0

나는 내용이 문서 순서 (기본적으로 항목이 기록 된 순서대로)로 정렬하려는 XML 파일이 있습니다.XSL 이상한 결과를주는 위치로 정렬()

<xsl:template match="/Error"> 
     <xsl:apply-templates> 
      <xsl:sort select="position()" order="descending" /> 
     </xsl:apply-templates> 
</xsl:template> 

<xsl:template match="/Error/Warning"> 
<!-- etc --> 
</xsl:template> 

예 XML (데이터 읽기의 용이성을 위해 대체) :

<Error> 
<Warning data="stuff" timestamp="08:26:17 2010/08/01">CODE.1</Warning> 
<Clear data="stuff" timestamp="08:26:36 2010/08/01">CODE.2</Clear> 
<Warning data="stuff" timestamp="08:36:00 2010/08/01">CODE.3</Warning> 
<Clear data="stuff" timestamp="08:36:56 2010/08/01">CODE.4</Clear> 
<Warning data="stuff" timestamp="08:40:31 2010/08/01">CODE.5</Warning> 
</Error> 

이를하지만, 것 같습니다으로 이상한 결과를 줄 것으로 보인다

나는 현재 다음과 같은 코드를 사용 특별한 순서없이! 어떤 아이디어?

정렬을 제거하면 정상적으로 작동하는 것처럼 보입니다. 이렇게하면 안정적으로 쓰기 순서로 주문하게됩니까? 아니면 보장되지 않습니까?

+0

문제가있는 출력을 제공하지 않고 표시되지 않은 출력의 문제점을 설명하지 않습니다. 또한 실제로 정렬해야하는 대상을 지정하지 않습니다. 이 질문은 불완전하고 정의되지 않았습니다. 제발, 당신의 질문을 수정하십시오. –

+0

패턴이 잘못되어있는 것처럼 보입니다. 'ErrorLog/Warning'이어야합니다. 또한 문서 순서로 정렬되므로 필요가 없습니다. –

+0

@Dimitre 출력이 임의의 순서로 표시됩니다. 표시하는 것이 중요하지 않습니까? - 질문이 업데이트되어 더 명확 해졌습니다. @Alejandro ''안에 모든 것을 주문하고 싶습니다. 폴 푸줏간 주의자 응답은 나가 필요로하는을 위해 잘 작동한다. – Chris

답변

1

<xsl:apply-templates />은 문서 순서로 선택한 노드 집합에서 작동하며 정렬 요소를 제거하면 원하는대로 작동합니다. 참조 : Applying Template Rules

1

템플릿을 적용 할 노드가 누락되지 않았습니까? 예를 들어

:

<xsl:apply-templates select="/Error/messages" /> 

당신이 XSLT 문제를 처리 할 때 작업중인 XML을 가지고 좋은 것입니다.

+0

좀 더 자세한 정보로 업데이트 ... – Chris

1

이렇게해야하지 않나요? apply-templates에 select 속성을 사용합니까?

<xsl:template match="/Error"> 
    <xsl:apply-templates select="./Warning" /> 
</xsl:template> 

<xsl:template match="/Error/Warning"> 
    <!-- etc --> 
</xsl:template> 

출력은 XML 소스의 순서대로 얻어야합니다.

+0

@Chris 오류의 자식을 필터링하고 경고 요소 만 사용하려면이 대답에 정의 된대로'xsl : apply-templates/@ select'를 사용하는 것이 좋습니다 , 단지'xsl : template/@ match'를 사용하는 것보다 –