我对XSLT还不太熟悉,我正全神贯注于一个问题。我有一个XML文档,它由一个特定的布局组成。我的问题存在的部分围绕如下:
<content>
<body>
<p>Paragraphs are a possibility</p>
<image src="base64-encoded-source" />
<image src="another-base64-encoded-source" />
</body>
</content>
JSON
使用
xsl:map
{
body-images: [
"decoded-source",
"another-decoded-source"
]
}
我使用与XSLT在同一文件夹中的XML文件,因此我事先选择这些文件,并使用名称空间机制引用它们。我最初能够通过使用
xsl:sequence
对我来说就像:
<xsl:if test="not(empty($content/content/body/image))">
<xsl:map-entry key="string('body-images')">
<xsl:sequence select="array{$content/content/body/image/@src/string()}"/>
</xsl:map-entry>
</xsl:if>
这是完美的,我设法填补了一个地图的关键与数组的来源,从图像。然而,这是我意识到我必须解码的base64编码源,我已经测试并计划使用
saxon:base64Binary-to-string(xs:base64Binary('source attribute of image goes here'), 'UTF8'))
这就是我被困的地方。我最初试图将base64解码放入序列中,但我的编辑警告我不能在
xsl:序列
. 然后我试着在数组中循环
xsl:序列
xsl:for-each
尝试选择我的映射键,然后对数组结果逐个使用base64解码。但是,我无法确定我必须使用什么作为键选择器,因为映射使用的键与其他键一样,最初在XML文档中找不到。
如果我的方法是不正确的开始,请随时让我知道,并指出我在正确的方向!