문제

아래의 XML을 사용하면 아래 XSL 시트에서 HIDEN 입력 태그의 속성으로 Case_ID 노드에서 텍스트 값을 얻는 방법을 알고 싶습니다. 이게 가능해?

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<NewDataSet>
<Cases>
<Case>
<case_id>30</case_id>
...
...
</Case>
</Cases>
</NewDataset>
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<input type="hidden" name="case_num" value="?"/>
</xsl:template>
</xsl:stylesheet>
도움이 되었습니까?

해결책

XSLT를 변경하기 만하면, 이로 인해 1 Case_ID 만 있다고 가정합니다. 그렇지 않으면보다 구체적인 템플릿 일치와 함께 가서 예제로 사용한 XPath 값의 경로를 제거해야합니다.

<input type="hidden" name="case-num">
    <xsl:attribute name="value">
        <xsl:value-of select="/NewDataSet/Cases/Case/case_id" />
    </xsl:attribute>
</input>

다른 팁

이 시도

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <input type="hidden" name="case_num">
      <xsl:attribute name="value">
        <xsl:value-of select="/NewDataSet/Cases/Case/case_id/text()"/>
      </xsl:attribute>
    </input>
  </xsl:template>
</xsl:stylesheet>

또는 이렇게 인라인 할 수 있습니다

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <input type="hidden" name="case_num" value="{/NewDataSet/Cases/Case/case_id/text()}"/>
  </xsl:template>

좀 더 구체적인 경기로 XSLT를 확장해야합니다.

다음은 출력해야합니다 input 당신을 포함하는 요소 case_id 각각의 값 Case. 나는 하나가 있다고 가정했다 case_idCase. 나는 XSLT를 가능한 한 명시 적으로 만들려고 노력했지만, 원하지 않는다면 구현에서 정확하게 할 필요는 없습니다.

 <xsl:template match="/">
   <xsl:apply-templates />
 </xsl:template>

 <xsl:template match="Case">
    <xsl:element name="input">
       <xsl:attribute name="type">
          <xsl:text>hidden</xsl:text>
       </xsl:attribute>
       <xsl:attribute name="name">
          <xsl:text>case_num</xsl:text>
       </xsl:attribute>
       <xsl:attribute name="value">
          <xsl:value-of select="case_id"/>
       </xsl:attribute>
    </xsl:element>
 </xsl:template>

AVT 만 사용하십시오 (속성 값 템플릿) : 다음과 같습니다.

<input type="hidden" name="case_num" value="{*/*/*/case_id}"/>

나는 그것을 다음으로 변경했다 :

<input type="hidden" name="case-num">
    <xsl:attribute name="value">
        <xsl:value-of select="case_id" />
    </xsl:attribute>
</input>

Foreach 루프에있는 것처럼. 고마워요, 그것은 대접을 일으켰습니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top