2013-07-01 2 views
1

XSLT를 처음 사용했습니다. 따라서 나는 몇 가지 어려움에 직면하고 있습니다. 상당히 큰 XML을 새로운 XML로 변형해야합니다. 그러나, 방법은 내가 향하고, 내가 어려움에 직면하고있다 :xsl에서 요소 생성 순서를 제어하는 ​​방법

입력 XML이 같을 수 :

<Employees> 
    <Employee> 
    <Name>A</Name> 
    <Role>Manager</Role> 
    <Salary>5000$</Salary> 
    </Employee> 
    <Employee> 
    <Name>A</Name> 
    <Role>Director</Role> 
    <Salary>8000$</Salary> 
    </Employee> 
</Employees> 

및 출력 XML 같이해야한다 : 지금 만약

<Manager> 
     <Employee_Name>A</Employee_Name> 
</Manager> 
<Count_Of_Employee>2</Count_Of_Employee> 
<Director> 
     <Employee_Name>B</Employee_Name> 
</Director> 

, <xsl:Employees/Employee> 템플릿을 적용한 다음 모든 직원을 확인하고 관리자 태그 바로 다음에 디렉터 태그를 만듭니다.

따라서 XSD에 대해 유효성 검사를 실행하면 그 사이에 coutn 태그가있을 것으로 예상되므로 실패합니다.

제 질문은 일반적인 템플릿을 작성하는 동안 출력 요소 노드의 순서를 어떻게 제어 할 수 있습니까?

내가 여러 가지 일반적인 템플릿을 검색하려고 .. 내가 큰 XML을 변환하는, 그래서 내가 <xsl:element>에게 내가 태그를 생성하고 각각의 시간을 쓰고 싶지 않아 ..하지만 나오지 않았어 :

내 다른 질문은 (대상 XML에서) 태그 이름이 소스 XML에서와 동일하지 않은 요소를 생성하기위한 좋은 일반 템플릿을 찾거나 쓰지 마십시오. [요소 이름이 둘 다 동일하고 다양한 일반 템플릿을 발견했습니다. XML].

사람은 내가뿐만 아니라 XSL 표준 libraray에서 보았다 .. 그 날 도와 주실 래요 ..하지만 좋은 대안을 찾을 수 없습니다 ..

어떤 제안이나 soultion 나에게 큰 도움이 될 것입니다 .

+0

; 좋습니다. 그러나 독자는 질문의 독자가 자신이하고있는 것을 이해할 수 있도록 XSLT를 충분히 보여줄 필요가 있습니다. 그렇다면 할 수있는 한 자신이하고있는 일에서 무엇이 잘못되었는지 진단 할 수 있습니다. –

답변

0

참조 구현 : 일부 샘플 입력하여 원하는 출력을 표시

<xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <!--Suppress unmatched text--> 
    <xsl:template match="text()" /> 

    <xsl:template match="/"> 
    <root> 
     <Manager> 
       <Employee_Name> 
       <xsl:apply-templates select="Employees/Employee[Role/. = 'Manager']"/> 
       </Employee_Name> 
     </Manager> 
     <Count_Of_Employee> 
       <xsl:value-of select="count(Employees/Employee)"/> 
     </Count_Of_Employee> 
     <Director> 
       <Employee_Name> 
       <xsl:apply-templates select="Employees/Employee[Role/. = 'Director']"/> 
       </Employee_Name> 
     </Director> 
    </root> 
    </xsl:template> 

    <xsl:template match="Employee"> 
     <xsl:value-of select="Name"/> 
    </xsl:template> 
</xsl:stylesheet> 
관련 문제