Nunca he utilizado "simplexml" pero utilizando DOM podrias validar el XML contra un DTD o un XSD para posteriormente hacer uso de "DOMDocument::getElementById"
Otra posibilidad imagino que fuera utilizar "DOMXPath::query" con una expresion como "/library//book[@id = '3']" pero nunca he utilizado "XPath" en PHP asi que tampoco tengo mucha idea.
Siento no poder ser de mas ayuda.
Salu2.
--- EDITADO ---
Por lo que veo "simplexml" soporta XPath asi que deberia de funcionar con algo como (repito que no conozco "simplexml" y lo siguiente no lo he probado):
Código PHP:
<?php
$library = simplexml_load_file("data.xml");
$book = $library->xpath("/library//book[@id = '3']");
echo '<table>';
echo '<tr>';
echo '<th>Title</th><th>Author</th><th>Publisher</th>';
echo '</tr>';
echo '<tr>';
echo '<td>' . $book[0]->title . '</td>';
echo '<td>' . $book[0]->author . '</td>';
echo '<td>' . $book[0]->publisher . '</td>';
echo '</tr>';
echo '</table>';
?>