attribute2: attribute2.o $(LIBS)
$(CXX) -o $@ $< $(LIBS) $(LDFLAGS)
+attribute3: attribute3.o $(LIBS)
+ $(CXX) -o $@ $< $(LIBS) $(LDFLAGS)
+
namespace: namespace.o $(LIBS)
$(CXX) -o $@ $< $(LIBS) $(LDFLAGS)
--- /dev/null
+#include <stdio.h>
+
+#include "xml-template.h"
+
+using namespace std;
+
+int main(int argc, char **argv)
+{
+ Substitute master_directive = {
+ make_pair("color", new Replace("blue")),
+ make_pair("#things", new Alternate { "li/class", {
+ new Substitute { make_pair("li", new Replace("Raindrops on roses")), },
+ new Substitute { make_pair("li", new Replace("Whiskers on kittens")), },
+ NULL,
+ new Substitute { make_pair("li", new Replace("Bright copper kettles")), },
+ new Substitute { make_pair("li", new Replace("Warm, woolen mittens")), },
+ }, { "odd", "even" } }),
+ };
+
+ process_file("../xml/clone.xml", argv[1], &master_directive);
+ return(0);
+}
vector<xmlNode *> new_nodes;
for (auto it : subdirectives) {
+ if (it == NULL) {
+ continue;
+ }
xmlNode *new_node;
xmlDOMWrapCloneNode(NULL, node->doc, node, &new_node, node->doc, NULL, 1, 0);
it->process(new_node, clean);
const vector<string> &alternatives)
: Clone(subdirectives_subs)
{
+ unsigned jx = 0;
for (unsigned ix = 0; ix < subdirectives_subs.size(); ++ix) {
- string value = alternatives[ix % alternatives.size()];
+ if (subdirectives_subs[ix] == NULL) {
+ continue;
+ }
+ string value = alternatives[jx++ % alternatives.size()];
subdirectives_subs[ix]->substitution_map.insert(make_pair(
attribute,
new Replace { value }));