예제로 배우는 xslt

이 예제에서는 루핑 구문입니다. xsl:for-each는 select 특성의 XPath 식과 일치하는 모든 항목을 소위 노드 집합으로 수집합니다. 그런 다음 이 노드 집합의 요소 다음에 요소를 처리합니다. 또한 정렬 문을 추가할 수 있습니다(코드와 같이 아래 참조). 노드 집합 관련 함수를 사용하면 위치에 따라 특정 노드를 선택하는 등의 작업을 수행할 수 있습니다. 예를 들어 마지막 레시피를 구체적으로 요청할 수 있습니다. 식은 모든 레시피 요소를 선택한 다음 마지막 요소만 반환합니다. 조건자의 일부로 대신 자체적으로 함수를 사용할 수도 있습니다. 예를 들어 레시피 요소(개수//레시피)의 개수를 구체적으로 요청할 수 있습니다. 이제 스타일시트 작업을 수행할 때 매우 중요한 부분 중 하나는 문서의 특정 부분을 선택하는 기능이라는 것을 알 수 있습니다. 예를 들어 지침을 표시하려면 지침을 참조하는 방법을 알아야 합니다. XSLT에서 XPath 식을 사용하여 이 정보를 참조합니다. 종종 모든 노드뿐만 아니라 특정 조건에 따라 특정 노드를 원합니다.

식 /레시피/레시피[2]//지침을 사용할 때 이전의 예를 보았습니다. 그건 정말 /recipes/recipe[position() = 2]//지침의 축약된 버전이며, XPath 프로세서에 각 레시피 요소(물론 하나만 있음)를 통과하도록 요청하고 각 레시피 요소에 대해 각 레시피 요소입니다. 각 레시피 요소에 대해 식 위치() = 2가 true인지 확인합니다. (즉, 이 목록의 두 번째 레시피입니까?) 조건자라고 하는 명령문이 true이면 프로세서는 해당 노드를 사용하고 이동하여 명령을 반환합니다. 컨텍스트 노드를 이동했기 때문에 출력이 변경되었습니다. 컨텍스트 노드를 기준으로 노드를 선택하려는 경우 중요합니다. 예를 들어 레시피의 제목만 선택할 수 있습니다(목록 18 참조). 다음 예제에서는 값 추출의 사용을 보여 줍니다. 우리가 아래에 보여주는 것보다 몇 가지 다른 솔루션이 존재 … XPath를 이해하는 첫 번째 단계는 얻을 수있는 결과가 현재 컨텍스트 노드에 의해 크게 결정된다는 것을 이해하는 것입니다. 컨텍스트 노드는 XPath 식에 따라 다양한 방향으로 이동하는 일종의 “현재” 기호로 생각할 수 있습니다.

예를 들어 이 간단한 스타일시트를 생각해 보십시오(목록 14 참조). xsl:value-of 요소는 노드의 텍스트 값을 출력하는 데 사용됩니다. 설명하기 위해 다음 예제를 살펴보겠습니다. XSLT를 사용하면 파일 맨 위에 있는 스타일시트를 가져올 수 있습니다. 왜 상단에? 스타일 시트를 가져오는 목적은 가져오기의 일부인 모든 템플릿을 재정의할 수 있는 옵션을 제공하는 것이기 때문입니다. 예를 들어 재료 템플릿을 가져오고 재정의할 수 있습니다(목록 29 참조). 가장 먼저 할 수 있는 일은 조건부 처리를 사용하여 메시지를 처음에 필요한 경우에만 표시하도록 하는 것입니다. 예를 들어 목록 35를 참조하십시오. xsl:특성 요소는 xsl:요소와 유사합니다. 특성을 명시적으로 출력하는 데 사용됩니다.

그러나 xsl:element보다 더 일반적으로 사용됩니다. 그 이유를 알아보려면 먼저 특성이 문자 그대로 출력되는 예제를 살펴보겠습니다.