--- - name: Setup test fixture copy: src: fixtures/ansible-xml-beers.xml dest: /tmp/ansible-xml-beers-implicit.xml - name: Add a phonenumber element to the business element. Implicit mkdir -p behavior where applicable xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/phonenumber value: 555-555-1234 - name: Add a owner element to the business element, testing implicit mkdir -p behavior 1/2 xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/owner/name/last value: Smith - name: Add a owner element to the business element, testing implicit mkdir -p behavior 2/2 xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/owner/name/first value: John - name: Add a validxhtml element to the website element. Note that ensure is present by default and while value defaults to null for elements, if one doesn't specify it we don't know what to do. xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/website/validxhtml - name: Add an empty validateon attribute to the validxhtml element. This actually makes the previous example redundant because of the implicit parent-node creation behavior. xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/website/validxhtml/@validateon - name: Add an empty validateon attribute to the validxhtml element. Actually verifies the implicit parent-node creation behavior. xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/website_bis/validxhtml/@validateon - name: Add an attribute with a value xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/owner/@dob='1976-04-12' - name: Add an element with a value, alternate syntax xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/beers/beer/text()="George Killian's Irish Red" # note the quote within an XPath string thing - name: Add an element without special characters xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/testnormalelement value: xml tag with no special characters pretty_print: yes - name: Add an element with dash xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/test-with-dash value: xml tag with dashes pretty_print: yes - name: Add an element with dot xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/test-with-dash.and.dot value: xml tag with dashes and dots pretty_print: yes - name: Add an element with underscore xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/test-with.dash_and.dot_and-underscores value: xml tag with dashes, dots and underscores pretty_print: yes - name: Add an attribute on a conditional element xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/beers/beer[text()="George Killian's Irish Red"]/@color='red' - name: Add two attributes on a conditional element xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/beers/beer[text()="Pilsner Urquell" and @origin='CZ']/@color='blonde' - name: Add a owner element to the business element, testing implicit mkdir -p behavior 3/2 -- complex lookup xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/owner/name[first/text()='John']/middle value: Q - name: Pretty Print this! xml: file: /tmp/ansible-xml-beers-implicit.xml pretty_print: yes - name: Compare to expected result copy: src: results/test-add-element-implicitly.yml dest: /tmp/ansible-xml-beers-implicit.xml check_mode: yes diff: yes register: comparison - name: Test expected result assert: that: - comparison.changed == false # identical #command: diff -u {{ role_path }}/results/test-add-element-implicitly.yml /tmp/ansible-xml-beers-implicit.xml # Now we repeat the same, just to ensure proper use of namespaces - name: Add a phonenumber element to the business element. Implicit mkdir -p behavior where applicable xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:phonenumber value: 555-555-1234 namespaces: a: http://example.com/some/namespace - name: Add a owner element to the business element, testing implicit mkdir -p behavior 1/2 xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:owner/a:name/a:last value: Smith namespaces: a: http://example.com/some/namespace - name: Add a owner element to the business element, testing implicit mkdir -p behavior 2/2 xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:owner/a:name/a:first value: John namespaces: a: http://example.com/some/namespace - name: Add a validxhtml element to the website element. Note that ensure is present by default and while value defaults to null for elements, if one doesn't specify it we don't know what to do. xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:website/a:validxhtml namespaces: a: http://example.com/some/namespace - name: Add an empty validateon attribute to the validxhtml element. This actually makes the previous example redundant because of the implicit parent-node creation behavior. xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:website/a:validxhtml/@a:validateon namespaces: a: http://example.com/some/namespace - name: Add an empty validateon attribute to the validxhtml element. Actually verifies the implicit parent-node creation behavior. xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:website_bis/a:validxhtml/@a:validateon namespaces: a: http://example.com/some/namespace - name: Add an attribute with a value xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:owner/@a:dob='1976-04-12' namespaces: a: http://example.com/some/namespace - name: Add an element with a value, alternate syntax xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:beers/a:beer/text()="George Killian's Irish Red" # note the quote within an XPath string thing namespaces: a: http://example.com/some/namespace - name: Add an attribute on a conditional element xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:beers/a:beer[text()="George Killian's Irish Red"]/@a:color='red' namespaces: a: http://example.com/some/namespace - name: Add two attributes on a conditional element xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:beers/a:beer[text()="Pilsner Urquell" and @a:origin='CZ']/@a:color='blonde' namespaces: a: http://example.com/some/namespace - name: Add a owner element to the business element, testing implicit mkdir -p behavior 3/2 -- complex lookup xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/a:owner/a:name[a:first/text()='John']/a:middle value: Q namespaces: a: http://example.com/some/namespace - name: Add an element without special characters xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/testnormalelement value: xml tag with no special characters pretty_print: yes namespaces: a: http://example.com/some/namespace - name: Add an element with dash xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/test-with-dash value: xml tag with dashes pretty_print: yes namespaces: a: http://example.com/some/namespace - name: Add an element with dot xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/test-with-dash.and.dot value: xml tag with dashes and dots pretty_print: yes namespaces: a: http://example.com/some/namespace - name: Add an element with underscore xml: file: /tmp/ansible-xml-beers-implicit.xml xpath: /business/test-with.dash_and.dot_and-underscores value: xml tag with dashes, dots and underscores pretty_print: yes namespaces: a: http://example.com/some/namespace - name: Pretty Print this! xml: file: /tmp/ansible-xml-beers-implicit.xml pretty_print: yes