xslt로 xml을 xhtml 코드로 해석

5756 단어 xsltxmlxhtml
xslt를 사용하여 해석하는 기본 형식은 다음과 같습니다. 예를 들어.XSL은 확장 스타일시트 언어(EXtensible Stylesheet Language)를 가리키며, xsl은 xml의 스타일시트이며, xsl은 xslt(XML 문서를 변환하는 언어), x-path(XML 문서에서 내비게이션하는 언어), xsl-fo(XML 문서를 포맷하는 언어)로 세 부분을 포함한다.http://www.w3cschool.cn/이 사이트에서 관련 내용의 강좌를 찾았다.앞에서 설명한 바와 같이 xslt는 xml 버전으로 시작하여 ...의 형식을 변환합니다.xslt를 처음 접촉했기 때문에 그것에 대한 이해가 투철하지 않다. 다음은 내가 그것을 배우고 사용할 때 만났던 요점들을 나열할 뿐이다.1. 귀속 및 매개 변수 전달 방법: 하나의 가족 트리를 예로 들면 xml 파일은 다음과 같다
 
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/>
<xsl:template match="/">
<html>
<body>
// xhtml
</body>
</html>
</xsl:template>
</xsl:stylesheet>
이제 xslt를 써서 가족의 관계를 표현해야 한다. 사실 가족의 관계는 하나의 가족 나무이다. 그래서 우리는 서로 다른 차원의 축소를 출력하여 이런 관계, 가장 큰 조상을 표현한 다음에 항렬에 따라 각각 축소한다. 가장 작은 항렬은 맨 뒤에 있고 가장 많이 축소된다. 이런 나무의 차원이 나온다.다음은 xsl 파일의 코드입니다
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="digui.xsl"?>
<person name="Otto" sex="mael" age="60">
  <person name="Sandra" sex="mael" age="35">
  <person name="Lichao" sex="femael" age="34">
   <person name="Zhangsan" sex="mael" age="12"/>
  </person>
  <person name="Eric" sex="femael" age="36">
   <person name="HaLi" sex="mael" age="18"/>
  </person>
  <person name="Lisi" sex="mael" age="30">
   <person name="HeLi" sex="mael" age="6"/>
   <person name="Andy" sex="femael" age="13"/>
  </person>
  </person>
</person>
여기서 우리는 먼저 템플릿에 level이라는 매개 변수를 정의하고 같은 문법을 사용한 다음에 주template()에 템플릿을 추가할 때 매개 변수에 값을 부여합니다. >, 매개 변수 level의 값은 처음에 "0"으로 지정됩니다.그리고 우리는 text-indent: {$level}em 같은 매개 변수 level의 값($level)으로 축소된 값을 사용합니다. 그래서 xml 내용을 과장할 때 첫 번째 층은 축소되지 않았습니다. 첫 번째 층을 과장한 후에 우리는 같은 방법으로 매개 변수 level의 값을 누적하여 귀속시켰습니다.파라미터 값에 2를 더하여 서로 다른 차원의 축소를 실현하여 가족 나무의 구조를 실현했다.여기서 다시 한 번 말씀드리지만, 우리는 @+ 속성, 예를 들어 @name을 통해 노드 속성의 값을 찾습니다.2. 매개 변수로 칸막이 색을 바꿉니다. 아니면 위의 예시와 매개 변수 level을 인용하여 우리가 귀속할 때 매개 변수 +1(홀수)을 주고 +2(짝수)가 아니라 (...test="$levelmod2=0") 또는 (...test="$levelmod2=1")을 통해 홀수 줄을 선택할 수 있습니다. 우리는 ... ...는 홀수 줄과 짝수 줄이 다른 background-color를 주어 칸막이 색을 바꾸는 효과를 실현했다. 구체적인 코드는 다음과 같다
 
<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="person">
<xsl:with-param name="level" select="'0'"/>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="person">
<xsl:param name="level"/>
<p style="text-indent:{$level}em">name:<xsl:value-of select="@name"/>,sex:<xsl:value-of select="@sex"/>,age:<xsl:value-of select="@age"/></p>
<xsl:apply-templates select="person">
<xsl:with-param name="level" select="$level + 2"/>
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
3. 기호의 전의와 CDATA 문법: 현재 만나는 것은'<'와'>'만이 전의해야 한다.>표현식에 이 두 기호가 나타나면 페이지가 미리 볼 때 오류가 발생합니다.또한 우리는 원본 파일의 내용을 그대로 내보내야 한다. 줄 바꾸기나 위의 크거나 작음 번호 등 페이지 요소를 포함한다. 이때 CDATA라는 라벨이 필요하다. CDATA는 전칭character 데이터라고 하고 문자 데이터로 번역하며 데이터는 의미를 바꾸지 않고 직접 출력한다.구문 형식은 다음과 같습니다. 예: ]]>>페이지에 표시되는 내용은''입니다.4. 몇 개의 강좌에서 언급하지 않은 명사: 1. local-name ().예: , 여기서 표현하는 뜻은 현재 노드의 이름입니다.2、...,call-template와apply-template의 차이점은 간단하게 말하면 apply는 응용이고,call는 호출입니다.apply를 사용할 때, 엔진은 현재 select가 지정한 xpath의 일치 노드와 일치하는template를 자동으로 검색하고, 이 template를 사용하여 처리합니다. 이때 지정해야 하는 것은 select의 path입니다.콜을 사용할 때 다른 언어에서 함수를 호출할 때와 같이name 속성을 지정해야 합니다. 이에 상응하는template에name 속성이 있어야 합니다. 물론,with-param(물론 상응하는 템플릿에 대응하는param이 있어야 합니다. 그러나 이것은 강제적으로 요구하지 않습니다).모드 속성을 설정하면 같은 내용의 다른 표현 형식을 호출할 수 있습니다. 이것은 스스로 정의합니다.3. count(ancestor::*)는 현재 노드가 몇 개의 조상 노드가 있는지 계산하는 것이다. 물론 ancestor는child,following-sibling 등 xpath 관계를 사용할 수 있다.5. 여러 조건에 부합해야 한다는 판단에 xslt는 잘 지지할 수 없다. 가족 트리를 예로 들면 2층에 있는 Lichao라는 이름을 지어야 한다. 글자로 이해하면 우리는

좋은 웹페이지 즐겨찾기