xsl에서 템플릿의 "모드"에 대한 예제를 제공 할 수 있습니까?
에
<xsl:template name="temp_name" mode="mode">
의 의미는 mode
무엇입니까? 많은 리소스를 검색했지만 그 예를 없었습니다. 그래서 아무도 예를 들어 설명 할 수 있습니까?
템플릿에 이름과 모드를 모두 제공하는 것은 그다지 의미가 없습니다 .
name
속성은 완전히 템플릿을 매료하고 같은 이름과 다른 모드와 두 개의 템플릿이 없습니다.
이 mode
속성을 사용하면 다른 모드를 사용하여 노드를 두 번 이상 처리 할 수 있습니다 .
다음은 간단한 예입니다.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="num[position() mod 3 = 1]">
<tr>
<xsl:apply-templates mode="copy" select=
". | following-sibling::*[not(position() >2)]"/>
</tr>
</xsl:template>
<xsl:template match="*" mode="copy">
<td><xsl:value-of select="."/></td>
</xsl:template>
<xsl:template match="num"/>
</xsl:stylesheet>
이 변환이 다음 XML 문서에 적용되는 경우 :
<nums>
<num>01</num>
<num>02</num>
<num>03</num>
<num>04</num>
<num>05</num>
<num>06</num>
<num>07</num>
<num>08</num>
<num>09</num>
<num>10</num>
</nums>
그 숫자 결과가 3 개 tr
(행) 로 표시되고 각 행에는 3 개 열이 포함됩니다 (마지막 행 제외 가능).
<tr>
<td>01</td>
<td>02</td>
<td>03</td>
</tr>
<tr>
<td>04</td>
<td>05</td>
<td>06</td>
</tr>
<tr>
<td>07</td>
<td>08</td>
<td>09</td>
</tr>
<tr>
<td>10</td>
</tr>
이 변환에서는 num
형식 3*k +1
(여기서는 k
정수) 으로 표현할 수없는 위치가있는 모든 요소가 본문이 비어있는 템플릿과 일치하므로 처리되지 않습니다.
그러나 우리 num
는 행의 셀을 형성해야하는 모든 요소 를 처리하려고합니다 . 이 목적을 위해 xslt 명령을 사용하여 처리합니다.
<xsl:apply-templates mode="copy" select=
". | following-sibling::*[not(position() >2)]"/>
즉, "일반적으로 적용되는 (모드 없음) 선택한 노드 템플릿에 적용하지 않고 모드에있는 템플릿을 적용 copy
합니다."
따라서 선택한 num
요소를 무시하지 않고 copy
모드 에서 처리하고td
행 의 s를 생성합니다 .
템플릿 규칙 :
<xsl:template match="num"/>
xslt 내장 템플릿 (기본 처리)을 재정의하는 데 필요합니다. 그렇지 않으면 num
위치를로 나타낼 수없는 노드 의 문자열 값 3*k +1
이 출력됩니다.
따라서 이러한 노드는 두 템플릿 모두에서 처리됩니다 .
<xsl:template match="num"/>
과
<xsl:apply-templates mode="copy" select=
". | following-sibling::*[not(position() >2)]"/>
따라서 원하는 결과를 얻습니다.
이러한 템플릿이 어떻게 적용되는지보기 위해 좋은 XSLT 디버거를 사용하는 것이 도움이 될 것 입니다.
<xsl:apply-templates select="phone" />
<xsl:apply-templates select="phone" mode="accountNumber"/>
<xsl:template match="phone">
<TD>A</TD>
</xsl:template>
<xsl:template match="phone" mode="accountNumber">
<TD>B</TD>
</xsl:template>
여기에 간단한 예제 링크 : https://msdn.microsoft.com/en-us/library/ms256045%28v=vs.110%29.aspx
참고 URL : https://stackoverflow.com/questions/4486869/can-one-give-me-the-example-for-mode-of-template-in-xsl
'ProgramingTip' 카테고리의 다른 글
던지기 또는 시도 잡기 (0) | 2020.11.05 |
---|---|
CSS 속성에서 '자동'값의 의미는 무엇입니까? (0) | 2020.11.05 |
사용으로 사용할 블록을 취하는 메소드 구현 (0) | 2020.11.05 |
스마트 폰 라디오를 통해 콘텐츠를 다운로드하는 앱의 배터리 영향 감소 (0) | 2020.11.05 |
maven "기호를 제거 할 수 없음"오류가 없습니다. (0) | 2020.11.05 |