문제
아래의 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_id
당 Case
. 나는 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 루프에있는 것처럼. 고마워요, 그것은 대접을 일으켰습니다!
제휴하지 않습니다 StackOverflow