2009-05-14 3 views
0

저는 제가 생각하기에 흥미로운 상황을 가지고 있습니다. 차고 XML을 가지고 있으며 HTML로 변환 (XSL 사용)하고 있습니다.XSL Traversing Question (서버 오류 포함) :

자동차 XML : 난 단지 <color> & <fuel>을 인쇄 할하지만 HTML 링크에서 HREF로 <licensePlate>을 설정할

<car> 
    <licensePlate>Car001</licensePlate> 
    <feature> 
     <color>Blue</color> 
     <fuel>Unleaded</fuel> 
    <feature> 
</car> 

.

자동차 XSL :

<xsl:template match="car"> 
    <tr> 
     <xsl:apply-templates select="licensePlate"/> 
     <xsl:apply-templates select="feature"/> 
    </tr> 
</xsl:template> 

<xsl:template match="feature"> 
    <td> 
     <a href="{preceding-sibling::licensePlate/text()}> 
      <xsl:apply-templates select="color"/> 
     </a> 
    </td> 
    <td><xsl:apply-templates select="fuel"/></td> 
</xsl:template> 

이것은 HREF 값으로 태그를 설정하는 내 목표를 달성하기 위해 나를 수 있습니다.

그러나 문제가 발생합니다 ... licensePlate의 모든 값이 화면에 인쇄됩니다.

다른 사람이 화면에 인쇄하지 못하도록하는 방법을 권할 수 있습니까?

나는 <xsl:apply-templates select="licensePlate"/>을 주석 시도했지만 나는 내가 CSS display:none을 적용하려고 할 때 나는 또한이 오류를받은 오류

을 받게으로 이것은 preceeding-sibling:: 문에 영향을 생각합니다. 당신의 시간과 인내에 대한

감사합니다를 루카스

답변

0

가 여기에 그것을 할 수있는 하나의 방법입니다. 색상과 연료에 대한 템플릿이 이미 있다고 가정합니다.

<xsl:template match="car"> 
    <tr> 
     <xsl:apply-templates select="feature"/> 
    </tr> 
</xsl:template> 

<xsl:template match="feature"> 
    <td> 
     <a> 
      <xsl:param name="href"> 
       <xsl:value-of select="../licensePlate"/> 
      </xsl:param> 
      <xsl:apply-templates select="color"/> 
     </a> 
    </td> 
    <td> 
     <xsl:apply-templates select="fuel"/> 
    </td> 
</xsl:template> 
+0

나는 당신의 제안을 시도했다. 나는 여전히 같은 에러를 보았다 : com.sun.xml.internal.ws.client.ClientTransportEception : 서버가 HTTP 상태 코드 -1 : null을 보냈다. – Lycana

+0

위의 내용은 이미 색상과 연료에 대한 템플릿을 가지고 있다고 가정 한 내용입니다. 사실입니까? 그렇다면 게시 할 수 있습니까? 추가 정보가 도움이 될 것입니다! –

1

당신은 <xsl:apply-templates select="licensePlate"/>을 주석 처리해야한다. 올바르게 주석 처리하면 오류의 원인이 될 수 없습니다.

기타 : <a href="{preceding-sibling::licensePlate/text()}> < - yuikes!

<a href="{../licensePlate}>!

+0

빠른 응답을위한 Alamar. 내 자식 요소가 아니기 때문에 여전히 작동합니까? Lycana

+0

@lucas : ".."는 "자식"이 아니라 "부모"를 의미합니다. – Tomalak

+0

예! 자식 요소에 대한 액세스는'{licensePlate}'일뿐입니다. – alamar

0
<xsl:template match="car"> 
    <tr> 
    <xsl:apply-templates select="feature" /> 
    </tr> 
</xsl:template> 

<xsl:template match="feature"> 
    <td> 
     <a href="{../licensePlate}"> 
     <xsl:value-of select="color" /> 
     </a> 
    </td> 
    <td> 
     <xsl:value-of select="fuel" /> 
    </td> 
</xsl:template> 

생산할 것인가 :

<tr> 
    <td> 
    <a href="Car001">Blue</a> 
    </td> 
    <td>Unleaded</td> 
</tr> 
+0

나는 당신의 제안을 시도했다 : 나는 여전히 같은 오류가 발생한다 : com.sun.xml.internal.ws.client.ClientTransportEception : 서버가 HTTP 상태 코드 -1 : null을 보냈다. – Lycana

+0

닫는 큰 따옴표가 빠졌습니다. 다시해볼 수 있니? – Tomalak