Compare commits

...

2 Commits

Author SHA1 Message Date
Molkobain
c00dead2c7 N°6960 - Fix \MFDocument::GetNodes() adding a predicate on last expression only instead of the whole XPath 2023-11-16 16:37:43 +01:00
Eric Espie
31e0327b0a N°6870 - Community re-integration support
Cherry-pick from support/3.1
2023-10-26 17:30:33 +02:00
2 changed files with 57 additions and 4 deletions

View File

@@ -1466,7 +1466,7 @@ EOF
switch ($sAlteration) {
case '':
if ($oNodeClone->hasAttribute('id')) {
$oNodeClone->setAttribute('_delta', 'must_exist');
//$oNodeClone->setAttribute('_delta', 'merge');
}
break;
case 'added':
@@ -2486,7 +2486,7 @@ class MFDocument extends \Combodo\iTop\DesignDocument
if ($bSafe)
{
$sXPath .= "[not(@_alteration) or @_alteration!='removed']";
$sXPath = "($sXPath)[not(@_alteration) or @_alteration!='removed']";
}
if (is_null($oContextNode))

View File

@@ -678,6 +678,59 @@ XML
<nodeA>
<nodeB>Luke Banner</nodeB>
</nodeA>
XML
];
$aDeltas['_delta="define_and_must_exits"'] = [
'sInitialXML' => <<<XML
<nodeA>
</nodeA>
XML
,
'sDeltaXML' => <<<XML
<nodeA>
<nodeB id="Banner" _delta="define"/>
<nodeB id="Banner" _delta="must_exist">
<nodeC _delta="define"/>
</nodeB>
</nodeA>
XML
,
'sExpectedXML' => <<<XML
<nodeA>
<nodeB id="Banner">
<nodeC/>
</nodeB>
</nodeA>
XML
];
$aDeltas['_delta="define_then_must_exist"'] = [
'sInitialXML' => <<<XML
<nodeA>
</nodeA>
XML
,
'sDeltaXML' => <<<XML
<nodeA>
<nodeB id="Banner" _delta="define">
<nodeE/>
</nodeB>
<nodeB id="Banner" _delta="must_exist">
<nodeC _delta="define_if_not_exists">
<nodeD id="Bruce" _delta="define"/>
</nodeC>
</nodeB>
</nodeA>
XML
,
'sExpectedXML' => <<<XML
<nodeA>
<nodeB id="Banner">
<nodeE/>
<nodeC>
<nodeD id="Bruce" _delta="define"/>
</nodeC>
</nodeB>
</nodeA>
XML
];
@@ -1320,7 +1373,7 @@ XML
'sExpectedXMLDelta' => <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<root_node>
<james_bond id="Sean" _rename_from="Roger" _delta="must_exist"/>
<james_bond id="Sean" _rename_from="Roger"/>
</root_node>
XML
],
@@ -1336,7 +1389,7 @@ XML
'sExpectedXMLDelta' => <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<root_node>
<james_bond id="Sean" _rename_from="Roger" _delta="must_exist">
<james_bond id="Sean" _rename_from="Roger">
<subtree _delta="define">etc.</subtree>
</james_bond>
</root_node>