首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML中“循环”的标准?

XML中“循环”的标准?
EN

Stack Overflow用户
提问于 2010-08-12 04:14:12
回答 5查看 29.4K关注 0票数 4

我正在为动画设计一个简单的XML文件。我经常遇到这样的情况,我会这样写:

代码语言:javascript
复制
<frame>
    <image>./image1.png<image/>
</frame>
<frame>
    <image>./image2.png<image/>
</frame>
<frame>
    <image>./image3.png<image/>
</frame>
...

现在,这当然会变得很烦人。所以我希望XML允许这样的东西:

代码语言:javascript
复制
<frameset min=1 max=5>
    <image>./image#.png<image/>
</frameset>

使#成为计数器变量的占位符。我想知道的是:是否已经有标准化的方法来做这样的事情了?如果一个人使用人们已经习惯的方法,它只会让事情变得更容易。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-08-12 04:17:22

没有通用的模型,但您正在寻找的本质上是一种模板解决方案-一种模板语言加上一个模板求值引擎,它通过执行模板中嵌入的代码将模板转换为最终的XML。

因此,对于模型,您可以使用您熟悉的任何模板语言。

当然,最好的方法是利用现有的模板引擎解决方案(如果您有权使用该解决方案);因此您不必编写一个。例如,JSP for Java,EmbPerl for Perl,XSLT等。

以下是示例EmbPerl模板的外观:

代码语言:javascript
复制
[$ foreach my $i (1..5) $]
<frame>
    <image>./image[+$i+].png<image/>
</frame>
[$ endforeach $]

许多模板解决方案看起来非常相似,只是标记略有不同,逻辑语法也明显不同(Perl、Java和xxx)

如果您使用自制解决方案,那么模板语言当然可以是XML本身,例如

代码语言:javascript
复制
<frameset min=1 max=5>
    <image part=1 content_type="constant">./image<image/>
    <image part=2 content_type="iterator_value"><image/>
    <image part=3 content_type="constant">.png<image/>
</frameset>
票数 3
EN

Stack Overflow用户

发布于 2010-08-12 04:17:28

XML是数据,而不是指令。如果你需要xml中的一种指令,那就把它变成数据。你可以像这样改变你的数据结构:

代码语言:javascript
复制
<frameset>
  <start>1</start>
  <end>3</end>
  <prefix>./image</prefix>
  <suffix>.png</prefix>
</frameset>

基本上就是你的第二种方法。

票数 4
EN

Stack Overflow用户

发布于 2010-08-12 04:26:00

这个想法的问题是“循环”可能意味着很多不同的东西。

在过程化语言中,循环意味着你做了某件事,然后(可能)又做了一次。过程语言已经有了一种表达“做某事”的方式。

在声明性语言中,XML更适合表达,尽管人们经常把XSLT的for-each说成是一个循环,但使用"for all all“比使用循环本身更常见。

过程性和声明性(以及其他)语言都可以用来执行您在这里讨论的那种重复任务,但是将它直接放入标记本身会混杂在一起,除非从标记所表达的意义来看,在其中声明“循环通过”或“针对每个域”是有意义的。

第一个XML文件是对框架的描述,第二个文件是对与框架有关的内容的描述。这是两个独立的东西,将它们混合在一起是令人担忧的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3462418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档