Ja, eigentlich müsste es so richtig sein und bei mir funktioniert das auch mit Deinem oben angegebenen Beispieldokument.
Hier ist noch eine kleine Prüfung zur Existenz der hyperlinkTextDestination eingebaut, aber im Wesentlichen ist das Dein Code:
Im Moment habe ich keine Erklärung, weshalb es bei Dir mit dem Beispieldokument nicht funktioniert.
---
edit:
Die else-Alternative ist freilich Quatsch, weil sie das Ziel bei der Quelle ergänzt. Das müsstest Du ggf. noch konkreter anpassen. Es sollte nur sicher stellen, dass ein ansprechbares Ziel mit diesem Namen existiert.