2

目前我有这个php:

$xmlstrQs = '<QSHotel></QSHotel>';
$xmlqs = new SimpleXMLElement($xmlstrQs);

$xmlqs->addChild('Occupancies');
$xmlqs->Occupancies->AddChild('Occupancy');
$xmlqs->Occupancies->Occupancy->AddChild('Rooms', 1);       
$xmlqs->Occupancies->Occupancy->AddChild('Adults', 2);
$xmlqs->Occupancies->Occupancy->AddChild('Childrens');      

$myXmlqs = $xmlqs->asXML();
$myXmlqs = str_replace('<?xml version="1.0"?>', '', $myXmlqs);

$xslt->setParameter( '', 'qsHotel', $myXmlqs);  

我需要将其作为 xml 或其他格式发送并在 xslt 中运行:

应该通过以下方式到达xslt:

<xsl:variable name="qsHotel">
  <QSHotel>
    <Occupancy>
      <Rooms>1</Rooms>
      <Adults>2</Adults>
      <Childrens/>
    </Occupancy>
  </QSHotel>
</xsl:variable>

然后将其作为节点交叉

<xsl:for-each select="exsl:node-set($qsHotel)/QSHotel/Occupancies/Occupancy">
4

2 回答 2

0

您不能使用 XSL 参数将 XML 传递到 XSL 样式表。XSL 参数只接受字符串。

您可以通过两种方式将 XML 放入 XSL 样式表;

  1. XML 源文档。
  2. 在 XSLT 中,使用该document()函数加载 XML 文件。
于 2013-11-14T21:47:18.547 回答
0

下面是一个示例,说明如何使用 PHP 使用document()函数将 XML 文件转换为 XSL 样式表...

<?php

$xml = mini_transform('<doc/>', 'foo.xsl');
echo("<xmp>$xml</xmp>");

// Mini-transform.
function mini_transform($str_xml, $file_xsl) {
  $xslt = new XSLTProcessor();
  $xslt->importStylesheet(new SimpleXMLElement(file_get_contents($file_xsl)));
  return $xslt->transformToXml(new SimpleXMLElement($str_xml));
}

?>

foo.xsl

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="doc">
    <result>
      <xsl:copy-of select="document('bar.xml')/*"/>
    </result>
  </xsl:template>

</xsl:transform>

栏.xml

<bar bish="234">
  <bosh/>
</bar>

结果

<?xml version="1.0"?>
<result>
  <bar bish="234">
    <bosh/>
  </bar>
</result>
于 2013-11-14T22:43:56.243 回答