Skip to content

Commit a75f54f

Browse files
committed
Remove empty <xi:fallback/> from skeletons and docgen
Empty xi:fallback elements silently swallow XInclude failures. Removing them ensures missing includes surface as errors instead of being ignored. Relates to #199.
1 parent 845f7c4 commit a75f54f

3 files changed

Lines changed: 13 additions & 31 deletions

File tree

scripts/docgen/docgen.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,7 @@ function gen_class_markup(ReflectionClass $class, $content) { /* {{{ */
605605
}
606606
$markup .= '<classsynopsisinfo role="comment">&InheritedProperties;</classsynopsisinfo>'. PHP_EOL;
607607
foreach ($inherited as $declaring_class) {
608-
$markup .= str_repeat(' ', $ident) ."<xi:include xpointer=\"xmlns(db=http://docbook.org/ns/docbook) xpointer(id('" . strtolower($declaring_class) . ".synopsis')/descendant::db:fieldsynopsis)\">" . PHP_EOL . str_repeat(' ', $ident + 1) . "<xi:fallback/>" . PHP_EOL . str_repeat(' ', $ident) . "</xi:include>". PHP_EOL;
608+
$markup .= str_repeat(' ', $ident) ."<xi:include xpointer=\"xmlns(db=http://docbook.org/ns/docbook) xpointer(id('" . strtolower($declaring_class) . ".synopsis')/descendant::db:fieldsynopsis)\"/>". PHP_EOL;
609609
}
610610
}
611611

@@ -643,22 +643,22 @@ function gen_class_markup(ReflectionClass $class, $content) { /* {{{ */
643643

644644
/* {PROPERTY_XINCLUDE} */
645645
$content = preg_replace('/\{PROPERTY_XINCLUDE\}/',
646-
"<xi:include xpointer=\"xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.". $id ."')/db:refentry/db:refsect1[@role='description']/descendant::db:fieldsynopsis[1])\"><xi:fallback/></xi:include>". PHP_EOL,
646+
"<xi:include xpointer=\"xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.". $id ."')/db:refentry/db:refsect1[@role='description']/descendant::db:fieldsynopsis[1])\"/>". PHP_EOL,
647647
$content, 1);
648648

649649
/* {METHOD_XINCLUDE} */
650650
$ident = get_ident_size('METHOD_XINCLUDE', $content);
651651
$content = preg_replace('/\{METHOD_XINCLUDE\}/',
652652
PHP_EOL . str_repeat(' ', $ident) . "<classsynopsisinfo role=\"comment\">&Methods;</classsynopsisinfo>". PHP_EOL.
653-
str_repeat(' ', $ident) ."<xi:include xpointer=\"xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.". $id ."')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='" . $escapedName . "'])\">" . PHP_EOL . str_repeat(' ', $ident + 1) . "<xi:fallback/>" . PHP_EOL . str_repeat(' ', $ident) . "</xi:include>",
653+
str_repeat(' ', $ident) ."<xi:include xpointer=\"xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.". $id ."')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='" . $escapedName . "'])\"/>",
654654
$content, 1);
655655

656656
/* {INHERITED_XINCLUDE} */
657657
if ($parent) {
658658
$ident = get_ident_size('INHERITED_XINCLUDE', $content);
659659
$content = preg_replace('/\{INHERITED_XINCLUDE\}/',
660660
PHP_EOL . str_repeat(' ', $ident) ."<classsynopsisinfo role=\"comment\">&InheritedMethods;</classsynopsisinfo>". PHP_EOL.
661-
str_repeat(' ', $ident) ."<xi:include xpointer=\"xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.". format_id($parent->getName()) ."')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='" . $escapedName . "'])\">" . PHP_EOL . str_repeat(' ', $ident + 1) . "<xi:fallback/>" . PHP_EOL . str_repeat(' ', $ident) . "</xi:include>". PHP_EOL,
661+
str_repeat(' ', $ident) ."<xi:include xpointer=\"xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.". format_id($parent->getName()) ."')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='" . $escapedName . "'])\"/>". PHP_EOL,
662662
$content, 1);
663663
} else {
664664
$content = preg_replace('/^\s*\{INHERITED_XINCLUDE\}.*?\n/m', '', $content, 1);

skeletons/classname.xml

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,16 @@
6060

6161
<!-- Edit the parentclass below -->
6262
<classsynopsisinfo role="comment">&InheritedProperties;</classsynopsisinfo>
63-
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parentclass')/db:partintro/db:section/db:classsynopsis/db:fieldsynopsis[preceding-sibling::db:classsynopsisinfo[1][@role='comment' and text()='&Properties;']]))">
64-
<xi:fallback/>
65-
</xi:include>
63+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parentclass')/db:partintro/db:section/db:classsynopsis/db:fieldsynopsis[preceding-sibling::db:classsynopsisinfo[1][@role='comment' and text()='&Properties;']]))"/>
6664

6765
<!-- Edit the classname below and ClassName in the @role='ClassName' XPath query -->
6866
<!-- If has a constructor -->
6967
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
70-
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.classname')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[@role='ClassName'])">
71-
<xi:fallback/>
72-
</xi:include>
68+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.classname')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[@role='ClassName'])"/>
7369
<!-- If has a destructor -->
74-
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.classname')/db:refentry/db:refsect1[@role='description']/descendant::db:destructorsynopsis[@role='ClassName'])">
75-
<xi:fallback/>
76-
</xi:include>
70+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.classname')/db:refentry/db:refsect1[@role='description']/descendant::db:destructorsynopsis[@role='ClassName'])"/>
7771
<!-- If has methods -->
78-
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.classname')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='ClassName'])">
79-
<xi:fallback/>
80-
</xi:include>
72+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.classname')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='ClassName'])"/>
8173

8274
<!-- Edit the parentclass below -->
8375
<!--
@@ -86,9 +78,7 @@
8678
i.e. class XYZ extends class XY and class XY extends class X
8779
-->
8880
<classsynopsisinfo role="comment">&InheritedMethods;</classsynopsisinfo>
89-
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parentclass')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='ParentClass'])">
90-
<xi:fallback/>
91-
</xi:include>
81+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.parentclass')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='ParentClass'])"/>
9282
</classsynopsis>
9383
<!-- }}} -->
9484

skeletons/exceptionname.xml

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,11 @@
3333
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
3434
<!-- If has a constructor -->
3535
<classsynopsisinfo role="comment">&Methods;</classsynopsisinfo>
36-
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.exceptionname')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[@role='ExceptionName'])">
37-
<xi:fallback/>
38-
</xi:include>
36+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.exceptionname')/db:refentry/db:refsect1[@role='description']/descendant::db:constructorsynopsis[@role='ExceptionName'])"/>
3937
<!-- If has a destructor -->
40-
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.exceptionname')/db:refentry/db:refsect1[@role='description']/descendant::db:destructorsynopsis[@role='ExceptionName'])">
41-
<xi:fallback/>
42-
</xi:include>
38+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.exceptionname')/db:refentry/db:refsect1[@role='description']/descendant::db:destructorsynopsis[@role='ExceptionName'])"/>
4339
<!-- If has methods -->
44-
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.exceptionname')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='ExceptionName'])">
45-
<xi:fallback/>
46-
</xi:include>
40+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.exceptionname')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='ExceptionName'])"/>
4741

4842
<!-- Edit the parentclass below -->
4943
<!--
@@ -52,9 +46,7 @@
5246
i.e. class XYZ extends class XY and class XY extends class X
5347
-->
5448
<classsynopsisinfo role="comment">&InheritedMethods;</classsynopsisinfo>
55-
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.baseexceptionname')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='BaseExceptionName'])">
56-
<xi:fallback/>
57-
</xi:include>
49+
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('class.baseexceptionname')/db:refentry/db:refsect1[@role='description']/descendant::db:methodsynopsis[@role='BaseExceptionName'])"/>
5850
</classsynopsis>
5951
</section>
6052

0 commit comments

Comments
 (0)