<!-- What we actually want example --> <?xml version="1.0" encoding="UTF-8"?> <PRODUCTRECS> <PRODUCT> <name>Dr. Zim</name> <address>1234 Internet Way</address> <city/><state/><zip/> </PRODUCT> ... </PRODUCTRECS>
有没有办法让XSLt读取顶部的字段名称,并在翻译时将字段名称放在实际数据周围?目前,我只是选择IF语句这样的位置(这样可行,但非常依赖和混乱):
<!-- Current nightmare code,check for each individually and print it out --> <xsl:template match="fmp:FMPXMLRESULT"> <PRODUCTRECS> <xsl:for-each select="fmp:RESULTSET/fmp:ROW"> <PRODUCT> <xsl:for-each select="fmp:COL"> <xsl:if test="position()=1"> <name><xsl:value-of select="fmp:DATA"/></name> </xsl:if> ... </xsl:for-each> </PRODUCT> </xsl:for-each> </PRODUCTRECS> </xsl:template>
<?xml version="1.0" encoding="UTF-8" ?> <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult"> <ERRORCODE>0</ERRORCODE> <PRODUCT BUILD="01-01-2009" NAME="FileMaker Pro" VERSION="10.0v3"/> <DATABASE DATEFORMAT="M/d/yyyy" LAYOUT="" NAME="filename.fp7" RECORDS="10" TIMEFORMAT="h:mm:ss a"/> <MetaDATA> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="name" TYPE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="address" TYPE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="city" TYPE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="state" TYPE="TEXT"/> <FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="zip" TYPE="TEXT"/> </MetaDATA> <RESULTSET FOUND="10"> <ROW MODID="0" RECORDID="1"> <COL><DATA>Dr. Zim</DATA></COL> <COL><DATA>1234 Internet Way</DATA></COL> <COL><DATA></DATA></COL> <COL><DATA></DATA></COL> <COL><DATA></DATA></COL> ... </ROW> ... </RESULTSET> </FMPXMLRESULT>
期待着那里的大师XSLTers. :)我的另一个问题是当原始文件在XML中存储为文本(00009.99000000)时,如何格式化数字价格为9.99美元的货币,但我可以处理这个.