0

XSLT を学ぶのは非常に難しいと感じています - まだ当惑するほど複雑ではない初心者ガイドが不足しているようです。誰かが私を助けてくれることを願っています。

以下の単純な XML ファイルを、Filemaker 12 で読み取れる XML に変換する必要があります。

<properties>
    <property>
        <ref>12345</ref>
        <location>somewhere
        <price>12345</price>
        <photos>
            <photo>www.test.com/1.jpg</photo>
            <photo>www.test.com/2.jpg</photo>
            <photo>www.test.com/3.jpg</photo>
        </photos>
        <details>
            <summary>nice house</summary>
            <description>a very very nice house</description>
        </details>
    </property>
</properties>

写真 (1 枚または 30 枚の可能性があります) をループして、概要と説明を取得する方法がわかりません。

誰でも助けることができますか?

どうもありがとう!

これは私がこれまでに持っているものです:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xsl">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
    <ERRORCODE>0</ERRORCODE>
    <PRODUCT BUILD="" NAME="FileMaker" VERSION="ProAdvanced 12.0v4"/>
    <DATABASE DATEFORMAT="" LAYOUT="" NAME="" RECORDS="" TIMEFORMAT=""/>
    <METADATA>
        <FIELD EMPTYOK="NO" MAXREPEAT="1" NAME="ref" TYPE="TEXT" />
        <FIELD EMPTYOK="NO" MAXREPEAT="1" NAME="location" TYPE="TEXT" />
        <FIELD EMPTYOK="NO" MAXREPEAT="1" NAME="price" TYPE="NUMBER" />
        <FIELD EMPTYOK="YES" MAXREPEAT="30" NAME="photo" TYPE="TEXT" />
        <FIELD EMPTYOK="NO" MAXREPEAT="1" NAME="summary" TYPE="TEXT" />
        <FIELD EMPTYOK="NO" MAXREPEAT="1" NAME="description" TYPE="TEXT" />
    </METADATA>
    <RESULTSET FOUND="">
    <xsl:for-each select="properties/property">
        <ROW RECORDID="" MODID="">
            <COL><DATA><xsl:value-of select="ref"/></DATA></COL>
            <COL><DATA><xsl:value-of select="location"/></DATA></COL>
            <COL><DATA><xsl:value-of select="price"/></DATA></COL>
            <xsl:for-each select="properties/property/photos">
            <COL>
                <DATA><xsl:value-of select="photo"/></DATA>
            </COL>
            </xsl:for-each>
            <COL><DATA><xsl:value-of select="summary"/></DATA></COL>
            <COL><DATA><xsl:value-of select="description"/></DATA></COL>
        </ROW>
    </xsl:for-each>     
    </RESULTSET>
</FMPXMLRESULT>
</xsl:template>
</xsl:stylesheet>
4

1 に答える 1

0

それ以外の

      <xsl:for-each select="properties/property/photos">
        <COL>
            <DATA><xsl:value-of select="photo"/></DATA>
        </COL>

あなたはおそらく欲しい

      <xsl:for-each select="photos/photo">
        <COL>
            <DATA><xsl:value-of select="."/></DATA>
        </COL>

その時点で、現在のノードはproperty要素であり、その理由は

        <COL><DATA><xsl:value-of select="price"/></DATA></COL>

上記の行で機能したため、パスはそこにない要素の子をproperties/property/photos探しています。propertiesproperties

于 2013-06-10T11:53:25.923 に答える