This is fine, in principle, but I would use XHTML5 instead of HTML5 as it allows for the introduction of alternative XML namespaces. Then I would use your custom elements in their own namespace to avoid collisions (in case a future HTML revision adds book and chapter elements, for example).
<html xmlns:hanfeisun="http://someReservedURIPossiblyYourXsdPath">
...
    <hanfesisun:book>
        <hanfesisun:chapter>
            Chapter 1
        </hanfesisun:chapter>
    </hanfesisun:book>
...
</html>
In CSS you need to use the @namespace block ( https://developer.mozilla.org/en-US/docs/Web/CSS/@namespace )
@namespace hanfeisun url(http://someReservedURIPossiblyYourXsdPath);
hanfeisun|chapter { display: block; }
For brevity's sake you can use a shorter namespace prefix, like just h instead of hanfeisun.