2010-06-08 2 views
1

위치 대신 위치 이름을 사용하여 Filemaker에서 내보내려고합니다. 현재 위치별로 내보내기하는 다음 XSL 스타일 시트를 내보냄 :Filemaker XSL 이름으로 열 선택

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:fm="http://www.filemaker.com/fmpxmlresult" exclude-result-prefixes="fm" > 
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> 
<xsl:template match="/"> 
    <people> 
    <xsl:for-each select="fm:FMPXMLRESULT/fm:RESULTSET/fm:ROW"> 
     <person> 
     <name> 
      <xsl:value-of select="fm:COL[01]/fm:DATA"/> 
     </name> 
     <location> 
      <xsl:value-of select="fm:COL[02]/fm:DATA"/> 
     </location> 
     </person> 
    </xsl:for-each> 
    </people> 
</xsl:template> 
</xsl:stylesheet> 

아이디어가 있으십니까? 감사. 그냥 코드를 더 읽기 쉽게하려면

+0

변환을 적용 할 (최소) XML 문서를 제공하십시오. Filemaker 파일의 형식을 아는 사람은 거의 없습니다. –

답변

4

, 그때 내가 같은 간단한 뭔가 좋을 것 : <xsl:value-of /> 당신이 fm:DATA를 생략 할 수 있습니다, BTW

<!-- expected columns --> 
<xsl:variable name="NAME" value="1" /> 
<xsl:variable name="LOCATION" value="2" /> 
<!-- ... --> 
<people> 
    <xsl:for-each select="fm:FMPXMLRESULT/fm:RESULTSET/fm:ROW"> 
    <person> 
     <name> 
     <xsl:value-of select="fm:COL[$NAME]/fm:DATA"/> 
     </name> 
     <location> 
     <xsl:value-of select="fm:COL[$LOCATION]/fm:DATA"/> 
     </location> 
    </person> 
    </xsl:for-each> 
</people> 

을, 즉 사용 :

<xsl:value-of select="fm:COL[$LOCATION] /> 

동일한 결과를 반환합니다.

더 정교한 것이 필요한 경우 설명하십시오.

업데이트 :

가 그런 일에 열 이름입니다 열심히에 의해 열을 참조하지만, 가능하려면 다음

<!-- Define a key to get a field and all fields that precede it by the field name --> 
<xsl:key name="N" match="/fm:FMPXMLRESULT/fm:METADATA/fm:FIELD" use="@NAME" /> 
<xsl:key name="N" match="/fm:FMPXMLRESULT/fm:METADATA/fm:FIELD" 
    use="following-sibling::fm:FIELD/@NAME" /> 
<!-- Then *count* them it in the code like that --> 
<people> 
    <xsl:for-each select="fm:FMPXMLRESULT/fm:RESULTSET/fm:ROW"> 
    <person> 
     <name> 
     <xsl:value-of select="fm:COL[count(key('N', 'name'))]" /> 
     </name> 
     <location> 
     <xsl:value-of select="fm:COL[count(key('N', 'location'))]" /> 
     </location> 
    </person> 
    </xsl:for-each> 
</people> 

완전히 우아한,하지만 작동하지 않습니다.

+0

이것은 내가하고자하는 것이 아닙니다. 사용자가 열을 재구성하면 내보내기가 여전히 작동하도록 열 이름별로 선택할 수 있기를 원합니다. –

+0

오, 알았어요. 다른 예를 들어 게시물을 업데이트하는 중입니다. –

+0

감사! 그게 내가 찾고 있던거야. 건배! –