- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试从我们的 Filemaker 数据库导出一些数据并通过 XSLT 转换它
我已经掌握了大部分方法,但在一些嵌套数据上卡住了:
XML 输出的当前结构是:
<?xml version="1.0" encoding="UTF-8"?>
<FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
<ERRORCODE>0</ERRORCODE>
<PRODUCT BUILD="07-18-2011" NAME="FileMaker" VERSION="ProAdvanced 11.0v4"/>
<DATABASE DATEFORMAT="D/m/yyyy" LAYOUT="" NAME="bubbles.fp7" RECORDS="34604" TIMEFORMAT="k:mm:ss "/>
<METADATA>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="description intro" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Description Line 1" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Description Line 2" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="description short" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="description W3" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="Destination URL" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="EAN Code" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="product code W1" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="product group name" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="product name W6" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="stock_for_sale_quantity" TYPE="NUMBER"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="UPC Code" TYPE="NUMBER"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="web link standard" TYPE="TEXT"/>
<FIELD EMPTYOK="YES" MAXREPEAT="1" NAME="products_ADDITIONAL_IMAGES::full url" TYPE="TEXT"/>
</METADATA>
<RESULTSET FOUND="6">
<ROW MODID="5678" RECORDID="5051">
<COL>
<DATA>description info here</DATA>
</COL>
<COL>
<DATA> desc line 1</DATA>
</COL>
<COL>
<DATA>desc line 2</DATA>
</COL>
<COL>
<DATA>short description here</DATA>
</COL>
<COL>
<DATA>
Reall long description goes in here</DATA>
</COL>
<COL>
<DATA>url to product</DATA>
</COL>
<COL>
<DATA/>
</COL>
<COL>
<DATA>SKU</DATA>
</COL>
<COL>
<DATA>Acoustic guitars</DATA>
</COL>
<COL>
<DATA>Epiphone EJ-200 Acoustic Guitar Vintage Sunburst EJ200</DATA>
</COL>
<COL>
<DATA>0</DATA>
</COL>
<COL>
<DATA>711106264509</DATA>
</COL>
<COL>
<DATA>http://www.mywebsite.co.uk/catalog/product/view/id/15186</DATA>
</COL>
<COL>
<DATA>http://www.mywebsite.co.uk/store/images/uploads/additional/epiej200vsbrst_01.jpg</DATA>
<DATA>http://www.mywebsite.co.uk/store/images/uploads/additional/epiej200vsbrst_02.jpg</DATA>
<DATA>http://www.mywebsite.co.uk/store/images/uploads/additional/epiej200vsbrst_03.jpg</DATA>
<DATA>http://www.mywebsite.co.uk/store/images/uploads/additional/epiej200vsbrst_04.jpg</DATA>
<DATA>http://www.mywebsite.co.uk/store/images/uploads/additional/epiej200vsbrst_05.jpg</DATA>
<DATA>http://www.mywebsite.co.uk/store/images/uploads/additional/epiej200vsbrst_06.jpg</DATA>
<DATA>http://www.mywebsite.co.uk/store/images/uploads/epiej200vsbrst.jpg</DATA>
</COL>
</ROW>
我的 XSL 在一定程度上可以正常工作,但我不能完全用它来挑选出每张图片:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fmp="http://www.filemaker.com/fmpxmlresult" version="1.0" exclude-result-prefixes="fmp">
<xsl:output method="xml" version="1.0" encoding="windows-1251" indent="yes"/>
<xsl:template match="/">
<product>
<product_count>
<xsl:value-of select="count(//fmp:ROW)"/>
</product_count>
<xsl:for-each select="fmp:FMPXMLRESULT/fmp:RESULTSET/fmp:ROW">
<product_info>
<description_info>
<xsl:value-of select="fmp:COL[1]/fmp:DATA"/>
</description_info>
<desc_line_1>
<xsl:value-of select="fmp:COL[2]/fmp:DATA"/>
</desc_line_1>
<desc_line_2>
<xsl:value-of select="fmp:COL[3]/fmp:DATA"/>
</desc_line_2>
<short_description>
<xsl:value-of select="fmp:COL[4]/fmp:DATA"/>
</short_description>
<long_description>
<xsl:value-of select="fmp:COL[5]/fmp:DATA"/>
</long_description>
<dest_url>
<xsl:value-of select="fmp:COL[6]/fmp:DATA"/>
</dest_url>
<ean>
<xsl:value-of select="fmp:COL[7]/fmp:DATA"/>
</ean>
<sku>
<xsl:value-of select="fmp:COL[8]/fmp:DATA"/>
</sku>
<group_name>
<xsl:value-of select="fmp:COL[9]/fmp:DATA"/>
</group_name>
<product_name>
<xsl:value-of select="fmp:COL[10]/fmp:DATA"/>
</product_name>
<stock_level>
<xsl:value-of select="fmp:COL[11]/fmp:DATA"/>
</stock_level>
<upc>
<xsl:value-of select="fmp:COL[12]/fmp:DATA"/>
</upc>
<web_link>
<xsl:value-of select="fmp:COL[13]/fmp:DATA"/>
</web_link>
<position>
<xsl:value-of select="fmp:DATA"/>
</position>
<images>
<xsl:variable name="count" select="count(fmp:COL[14]/fmp:DATA)"/>
<image_count>
<xsl:value-of select="$count"/>
</image_count>
<xsl:for-each select="fmp:COL[14]/fmp:DATA[position()<=$count]">
<img>
<xsl:value-of select="position()"/>
</img>
</xsl:for-each>
</images>
</product_info>
</xsl:for-each>
</product>
</xsl:template>
除了给我正确数量的标签但没有数据的位之外,这有效
<images>
<image_count>7</image_count>
<img/>
<img/>
<img/>
<img/>
<img/>
<img/>
<img/>
</images>
有人可以帮助完成最后一个小循环吗?
最佳答案
你让事情变得比你需要的复杂得多:
<xsl:for-each select="fmp:COL[14]/fmp:DATA">
<img>
<xsl:value-of select="."/>
</img>
</xsl:for-each>
给你
<img>http://www.absolutemusic.co.uk/store/images/uploads/additional/epiej200vsbrst_01.jpg</img>
<img>http://www.absolutemusic.co.uk/store/images/uploads/additional/epiej200vsbrst_02.jpg</img>
....
顺便说一句,我过去不得不编写 filemaker XSLT 并让自己保持清醒(并且不必记住每个字段的正确列索引)我使用了这样的技巧:
<xsl:variable name="mdf" select="/fmp:FMPXMLRESULT/fmp:METADATA/fmp:FIELD" />
<xsl:variable name="descIntro" select="count($mdf[
following-sibling::fmp:FIELD/@NAME = 'description intro']) + 1" />
<xsl:variable name="descL1" select="count($mdf[
following-sibling::fmp:FIELD/@NAME = 'Description Line 1']) + 1" />
等等。这会为每个字段名称创建一个变量,其中包含该字段的正确索引,因此您可以使用 fmp:COL[$images]
之类的表达式,而不是 fmp:COL[14]
。这还有一个额外的好处,即如果您稍后更改导出定义以包含 XSLT 自动补偿的其他字段,则您不必手动修改所有数字。
关于xml - filemaker xml 通过 xslt 导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13137517/
我有一个 XSLT 样式表,如下所示: 我想使用第二个 XSLT 样式表来转换此样式表,以删除与 XQHead
我们有一个大型 xslt,可以呈现整个商店区域,包括产品、制造商,并根据价格和类别进行过滤。我使用 sitecore 作为 CMS,但遇到缓存问题。我有大约 9000 个项目,有些页面需要长达 20
我想根据条件的结果应用具有不同参数的模板。像这样: Attribute no. 1
我有一些看起来像这样的 XML Foo Details Bar Details Baz Details Foo Blah Bar BlahBlah Baz BlahBlahBl
我试图从这种输入出发: a b c d e f g ... 使用 XSLT 的 HTML 输出: one two a e b f
我想知道如何在 xslt 中找到特定节点的第一个子节点名称。 我有一个 xml: some text 我可以使用 body/
是否可以在 XSLT 中获取上个月的最后一天?我找到了这个函数:http://www.xsltfunctions.com/xsl/functx_last-day-of-month.html但我不确定如
具有特定节点的匹配元素存在问题。 xml: description of profile PhoneKeyPad S
我将一堆键值对作为参数传递给 XSL(日期 ->“1 月 20 日”,作者 ->“Dominic Rodger”,...)。 我正在解析的一些 XML 中引用了这些 - XML 如下所示: 目前,除
我找不到这个问题的确切答案,所以我希望有人能在这里帮助我。 我有一个字符串,我想在最后一个 '.' 之后获取子字符串。我正在使用 xslt 1.0。 这是怎么做的?这是我的代码。
我在尝试找出 xslt 上的 var 范围时遇到问题。我实际上想要做的是忽略具有重复“旅游代码”的“旅行”标签。 示例 XML: X1 Budapest X1 Budapest X
我有一些数据在 xslt 的 for-each 循环中输出。我对列表进行了分页,但没有对排序选择器进行分页。 用户应该能够对 2 个值(创建的数据和每个项目的数字字段)进行排序。默认的排序方法是创建日
我有一个奇怪的要求。 我在 xslt 中有一个包含月份的变量,带有它们的 id (1-12) 问题是我需要全部显示它们,但从一月(1)以外的月份开始。 目前我有以下 JAN
如何在 xslt 转换中模块化一组重复的输出?例如,我有如下内容(伪代码)。 并
我得到一个像这样的字符串。 13091711111100222222003333330044444400 字符串的模式是这样的 13 - 09 - 17 - 11111 - 100 - 22222 -
我是 XSLT 的新手,有一个一般性问题。为了区分具有不同属性的两个元素,最好(也是为了性能)使用 和 而不是 在一个模板中。据我所知,这就是 XSLT 中应该“思考”的方式。但在我看来,这有一个缺点
如何从“19650512-0065”到“196505120065”这样的字符串中删除连字符 使用这个模板:传递 theID =
是否有任何功能可以在左侧填充零? 我正在尝试做的要求是: 我们不知道即将到来的输入字符串长度。 如果小于 20,我们必须在左侧填充零。 如果输入字符串长度为 10,那么我们必须在左侧填充 10 个零。
身份模板如下所示: 是否选择多于 ,或者身份模板可能是这样的? 当我执行以下操作时,究竟选择了什么? 最佳答案
我正在尝试使用 XML 信息和 XSLT 模板创建超链接。这是 XML 源代码。 Among individual stocks, the top percentage gainers in the
我是一名优秀的程序员,十分优秀!