【发布时间】:2014-06-20 04:55:08
【问题描述】:
从其他人的经验来看,似乎是个案,他们的问题通常是如何干燥这个或如何干燥那个......所以在我的情况下,它是类似的,而不是对于一个特殊情况,我尝试更笼统地问:
说,我有一个带有以下几行的 xml 代码
<input type="text" defaultValue="" name="Fax_Label" label="Fax Label" />
将被解析,然后使用 XSLT 进行样式化。
因为我来自更像 CSS、PHP、JS,基于我的 php 经验 我可以创建一个这样的数组和一个循环来完成,这样我就可以将参数与模板块分开,例如。
$para_arr = array(
// type | name | label
array('text', 'Fax_Text', 'Fax Text')
);
for( $i=0; $i<count($para_arr); $i++){
echo '<input type="{$para_arr[i][0]}" defaultValue="" name="{$para_arr[i][1]}" label="{$para_arr[i][2]}" />';
}
是否有任何 XML 等效的方法来完成相同的事情? 非常感谢。
以上内容将成为该问题历史的一部分,并让其他人知道为什么我被否决了。 老问题:如何像 PHP 一样使用数组和 for 循环来干燥 XML/XSLT?
此处修改问题: 可以干燥这个结构吗? 因为会有超过 30 个字段,所以要全部复制粘贴并逐个编辑,非常繁琐且难以维护。
<namespace>
<cms_data>
<inputGRP>
<input type="text" defaultValue="" name="nickname_label" label="NickName Label" />
<input type="text" defaultValue="" name="nickname_error" label="NickName Error" />
<input type="text" defaultValue="" name="rowTitle_login" label="Row Heading Login" />
<input type="text" defaultValue="" name="title_label" label="Title Label" />
<input type="text" defaultValue="" name="title_error" label="Title Error" />
</inputGRP>
</cms_data>
</namespace>
【问题讨论】:
-
很难给出具体的答案,因为问题不够具体。一般来说,XSLT 在 XML 被解析之后就可以与 XML 一起工作——所以这项工作已经为您完成了。
-
您生成一个 XML(例如使用 DOM)。 Xslt 从 DOM 读取值并对其进行转换。
-
感谢您的评论,我试图更具体地更改问题。也许我应该多放一些我打算实现的sn-ps。
-
我仍然不知道你的问题是什么。 XSLT 不是 PHP。不问如何在 XSLT 中使用 PHP 工具;询问如何在 XSLT 中完成任务。
-
我明白你的意思,嗯,这可能是因为我的想法是基于我的母语(显然不是英语)所以我想表达类似“如何通过与另一个类比来完成这项任务我知道的编程语言”,我会在当前工作之后尽快完善问题和内容。非常感谢您的宝贵时间。